The other day, when I turned the clock on, I noticed it was running a few minutes fast but once I reset the time, never gave it another thought.
Yesterday I switched the clock on and the time was completely incorrect. A quick check of the battery backup voltage revealed the problem; it was down to around 1.1v which is odd as it's a rechargeable cell and the recharging is supposed to be controlled by the Maxim DS1302 RTC chip.
I checked the firmware source code against the RTC datasheet and the error immediately became obvious. A bug in the code that's taken nearly two years to come to light, meant I wasn't specifying the charging options incorrectly. I've corrected the problem and updated the project files to include the fix.
This is an interesting reminder that even in the simplest of projects, some bugs can take a long time to surface.