No, unfortunatly it can, and this is the problem I am thinking about. This happen after millis has reached the maximum unsigned long value. It restarts from 0 and so we can have situations like thisTime=210510 oldTime=4294967200. The problem is about number rappresentation. If you have 2-4 the result is -2 but if the maximum value you can store is (for example) 5 the time elapsed would be 3. In this case the maximum value is 4294967295(the maximum unsigned long value)