While we're on the subject of misbehaving I2C devices:
It is possible (due to power issues or what-have-you) for a DS3231 to malfunction: for example, it might set itself to a garbage date and/or time. I've had this happen to me. If I am particularly concerned about the possibility of this happening, I will perform sanity checks on the received date and time information. For example, as we are now in the year 2018, it might be a good idea to reject as garbage any date containing a year from '00 to '17, along with any time associated with such a date. Also, as it is not particularly hard to calculate the correct day of the week for any date, the day of the week can serve as a sort of checksum for the other date information. Yes, I know, this doesn't help us if only the time of day gets messed up, but it's a start, at least.