Perhaps a unrelated interrupt happening during low-level RTC accesses, resulting in stretched/incorrect transfer timing?