The purpose of SRFI 144 is to provide the same floating-point facilities to the Scheme programmer that <math.h> provides to the C programmer.  Unfortunately, there's one major collision: the flround procedure.  As presently defined, on half-integral values it rounds to the nearest even integer, just like the RnRS Scheme round procedure.  Unfortunately, it also refers to the C round() function, which rounds away from zero.

It's specified that wherever there is a reference to a C function in SRFI 144, it supersedes the informative definition.  This is so that implementations can do SRFI 144 by simply invoking their FFIs if they have them, and is how the Chibi implementation works.  We also have a fast portable implementation, which implements flround as RnRS round.

So the portable implementation rounds to even, the Chibi implementation rounds away from zero, and the spec literally says to round to even but then overrides that to round away from zero.  We can't finalize SRFI 144 until this is resolved once for all.

Will Clinger, who wrote the portable implementation, is on record as saying that round-to-even is better than round-away-from-zero.  I'd like comment, preferably with arguments, from others.  My own inclination is to make flround do what C round() does, namely round away from zero, as part of my original intention for the SRFI, but I don't want to make flround un-useful for Scheme programmers.  On the third (possibly gripping, possibly not) hand, RnRS round is still available for round-to-even.

John Cowan
"Hacking is the true football."  --F.W. Campbell (1863) in response to a
successful attempt to ban shin-kicking from soccer.  Today, it's biting.