Here's what I thought about while trying to go to sleep: The game strobes the digits from right to left, setting the segments for the current digit. So select digit 1, set segments, select digit 2, set segments, etc. There's a little time after digit 2 has been selected before the digit 2 segments have been set, so the digit 1 segments are still active. I thought maybe the decay code sees that glitch and extends it.
QKR actually disables the segment outputs (EN2=0) before selecting the digit and setting the segments, then re-enables them (EN2=1). I'm guessing that's to keep those glitches from causing ghosts.
I'll take a look at SI and see if it does the same; if so, maybe you could not update the display if EN2=0, then update it when EN2 gets set?