I've seen this on BCM50 and BCM450, but only for IP handsets, not on TDM handsets, which are exactly the right time.
I've tried level1-resetting the BCM50, but the problem remains - the phones change time exactly 13 seconds past each minute, both before and after the reset. Other BCM systems I've seen are different numbers of seconds out.
I've used wireshark to see what happens, and I see that the BCM sends a UDP packet to the phone once per minute, with the text of what to display on the phone. So it's not the phone keeping the time: the bcm tells the phone what to display, and the text equals the current time. The phone will continue to display that text until it receives another update. If it misses one, it will keep the same time on the display for two minutes.
I found that, by setting the time on the BCM50 to 13 seconds slow, I could get the all phones to have synchronised times, all being 13 seconds out from the real time. So, always the IP phones get updated at 13 seconds past each minute, regardless of the actual time on the BCM50.
However, this had the effect of making the TDM phones be 13 seconds slow, which perhaps not all users would be happy with. Also, the BCM50 cannot easily then be set to get its time from an NTP server or from line trunks, etc.
I've also tried powering down the system overnight and then setting it up again. Again the phones get updated 13 seconds past each minute. I figure that the problem must be with the internal clock on the BCM50. My next task, when I get to it, is to remove the
snaphat battery from the mainboard for a while and and see what happens afterwards. I don't know whether there's such a battery on a BCM450, though.