I’ll add one more piece to this puzzle. Unless something changed since I looked deeply into this a while back, Trunc() is not called until after the first timestep. That is, it is not called when t=0 (which makes sense). QSpice will call the evaluation function for t=0 and the first t>0 before Trunc() is called.
This would be a problem if the first step is, for some reason, too long/large. The MaxExtStepSize() does get called before the first t>0 and can be used to ensure that the first step isn’t too large. This could, of course, be done with a schematic MAXSTEP option but MaxExtStepSize() can be adjusted on the fly to avoid keeping it too small for too long.
–robert