Just to clarify, in Arduino 0011, the return value for millis() increments upwards by 1 per millisecond until it reaches 0x20C49B9 (about 9 1/2 hours) and then returns to 0 ("rolls over") and continues upward. In Arduino 0012, the rollover occurs at 0xFFFFFFFF, or about 49 days.
I haven't investigated the library code in particular, but I would suggest replacing
if (fp->stopMillis <= currentMillis)
with
// Version 0011 fix
#define ROLLOVER 0x20C49BA
if (currentMillis - fp->stopMillis % ROLLOVER < ROLLOVER/2)
or
// Version 0012 fix
if (currentMillis - fp->stopMillis < 0x80000000)
Mikal