Once again, I started poking around in the Library...
if (fp->stopMillis <= currentMillis)
As soon as the arduino's millis counter rolls over, this will get stuck in a 9-hour loop.
I don't have anything off the top of my head right now, but I think a simple for or switch statement to check if the stopMillis is higher than the millis() rollover point.