The game time is calculated from the frame count, which every bank updates via NMI. 60 frames => 1 second, 60 seconds => 1 minute, etc. This is an interesting bug, as it implies that the Step Mine calculation is looking at the display variables, which are copies, instead of the original game time, and that the copies are only updated by visiting the menu (which makes sense). Awesome find, mblock!
As for a fix: Assassin, your idea about a possible bug arising from a brief carry-in when reading the variables is plausible. One question though, Wouldn't it be best just to make a single read of the minutes variable? There shouldn't be any reason to look at any smaller increment.The frames, seconds, minutes, and hours are stored consecutively, so a single 16-bit word could be read (for hours and minutes), and then divided as needed.
Just my initial thoughts.