John,

One possiblility ...

Your MainLoop is talking to the RTC on every loop to check the time.
If an Alarm happens while the mainloop is using I2CWRITE, and it tries to use I2CWRITE to clear the status reg, it's probably going to confuse the RTC.

Since you have 1 minute till the next Alarm INT, try clearing status in the MainLoop or Logging routine.