     else
     {
       break;
+    }
+  }
+
+  // If the final value we read was an actual clock value, we want to
+  // write the next clock value in the next available slot, otherwise
+  // we want to overwrite this uninitialized slot
+  if (clockValue < 0xFFFFFFFF)
+  {
+    nextClockBufferLocation++;
+    if (nextClockBufferLocation > maximumEepromAddress)
+    {
+      nextClockBufferLocation = 0;
     }
   }
 }

{
  eeprom_write_dword(nextClockBufferLocation, secondsOfOperation);
  nextClockBufferLocation++;
  if ((uint16_t)nextClockBufferLocation > eepromSize)
  {
    nextClockBufferLocation = 0;
  }
}


void ReadClock()
{
  secondsOfOperation = 0;
  uint32_t clockValue = 0;
  
  for (nextClockBufferLocation = 0; nextClockBufferLocation <= maximumEepromAddress; nextClockBufferLocation++)
  {
    clockValue = eeprom_read_dword(nextClockBufferLocation);
    if (clockValue >= secondsOfOperation && clockValue < 0xFFFFFFFF)
    {
      secondsOfOperation = clockValue;
