Well, it's wierd that Date::Calc is doing that - returning a value of -0 that is. Because you cannot test for +0 or -0, think about it, 0 is zero. Add 1 to it and +0 becomes one, but so does minus 0. In fact the returned value has no significance or value, so you bneed to ask "why is Date::Calc returning a nonense value?". It may in fact mean that you are calling it invalidly and it is trying to DWIM with your request.
Maybe a code fragment that illustrates the situation would be helpful.