It seems the Timer() function draws the time from when the system was turned on. Therefore what the Mage pointed out could cause the issue if the system had been running for many days.
2147483647 is the maximum positive return value for the system time in integer form; which amounts to 596 hours, which is 24 days. I'm not sure of many people who leave the PC on for that long; even servers need a regular reboot to refresh themselves; however perhaps there are people who leave their PC's on for 24 days, and if they run your program on the 59th minute of the 23rd hour of the 23rd day then they might hit some trouble.
I do not know if the timer continues to tick while hibernating; something I have not tested

.
I always thought the Timer() rolls back to -2147483646 due to the issue that occured with
this persons DBP program.
The ABS solution sounds interesting; my current solution was to prompt the user to reboot the system before commencing with the game an hour before the roll over.
Although I indeed use the method Mage uses; written this way:
If Time <= Timer()
Time = Timer() + Delay
EndIf
Sometimes the Matrix1 ticker is prefered:
TenTimesPerSecond = 10
Make Frequency Ticker 1, TenTimesPerSecond
Do
If Ticker(1)
Print "100 ms has passed"
EndIf
Loop
Milliseconds = 10000
Make Ticker 1, Milliseconds
MyEventTicker = 1
Do
If Ticker(MyEventTicker )
Print "10 seconds has passed"
EndIf
Loop
Two advantages of the manual approach is that the delay can be used in expressive calculations; and do not share the 214400 or so ticker limit (I believe it is).
The good thing about tickers is their object orientated nature; being able to share the ticker with other objects rather seamlessly.