Hi,
millis() starts counting from the beginning of the sketch, IE when the arduino boots up. It doesn't ever really "reset". So your initial grab of millis() in the setup routine is fine.
However, millis() DOES rollover. This could lead to a condition where your clock "freezes" for a long time, because 'start' is a really big value and millis() is returning a small value. There's another thread on the forum somewhere about detecting and handling rollover of the timer. Use the search, Luke. ![]()
You might want to investigate using the timer interrupt directly to update the current time. Interrupts are a bit tricky, but in this case it would be more accurate.
HTH,