While nosing around nearby stuff I noticed (* 0 1.0) => 0 (* 0 1+1i) => 0 but (* 1.0 0) => 0.0 (* 1+1i 0) => 0.0 which seems a bit inconsistent. R5RS "Exactness" reads like either exact or inexact is permitted, but I imagine it ought to be the same whichever way around you write the args. I think I'll change the latter two to exact 0.