Simply (maybe simply) put the delay in seconds is recorded in milliseconds into a 32bit signed integer.
/timer c d cmd
c = cycles (number of times to do something, 0 = infinite)
d = delay between cycles in seconds Valid values for the timer are 0 to 2,147,483
After that it all goes fruity, the exact number is 2,147,483,648 millseconds this is the moment you have exceeded the value you can store in a 32bit signed number.
This happens to be the same problem as what Win9x had with falling over in 24days 20hrs 31mins 24secs, after switch on, the 32bit signed number that stored milliseconds since startup wasnt large enough anymore and the value rolled over into the negitives.