It should be always >= zero
It is also defined as the difference between the clock period and the total path delay from one flop to other flop which includes the clock to q delay of source flop, total combinational delay between flops and set up time of the destination flop.
Slack related problems will arise for the critical paths in the design i.e nothing but the max. delay paths, clock to Q delay + Prop.Delay + setup of of dest flop.
In any design Slack should always be +ve. If it is negitive means there is a timing violation that is not meeting a setup or a hold requirement and it gets difficult to achieve the required frequency.