In a weird way, I think this is helping to clear up (most of) SIFR for me. Essentially, it sets* directly to 0, rather than apply a particular negative. Then we work from timestamps - if an effect that was in play before SIFR then leaves, we basically ignore it because SIFR set directly to 0. So, in the case of, say, a fracter coming into play while Wraparound is out, it’s something like this-
Wrap with no fracter - (0 + 7) * SIFR = 0.
Fracter comes into play. We take out the +7 and get - (0) * SIFR = 0.
The one place I’m still a bit uncomfortable here are variable bonuses such as Sandburg’s. @jakodrako’s earlier tweet on the subject seemed to suggest we should treat the bonus as discrete units for the purpose of time-stamping (e.g. +1 at 11:01, then another +1 at 11:05) rather than as a single block (+2, last updated at 11:05). On it’s face that seems workable (if a bit peculiar), but I’m still not 100% on how to best treat something that reduced and then re-raised after a SIFR came into effect. It seems like we should just treat each chunk like an entirely new bonus, but we do run into kind of a Ship of Theseus problem if we extend this to more elaborate scenarios. For example, we could have, say, a +5 bonus from Sandburg that was applied before SIFR is replaced, one +1 portion at a time, by a new set that are each timestamped after the SIFR.
*As a super pedantic and unlikely to ever be relevant point, I do wonder if SIFR can set a negative strength ice to 0 - the term “lowers” seems to suggest not, but this does open up other weird edge cases.