This is a flaw in the windows timeGetTime function (not a bug), and is deterministic behaviour. The windows SDK states:
so every ~50 days one of your counters will reset before the other does and when you take the difference of the two you will get a negitive number.