One thing that is clear from inspecting code that actually uses FLOOR, CEILING, etc, is that there is a very strong usage pattern; the procedure inexact->exact is almost ALWAYS called on the result. I think standard library macros ought to capture and standardize this usage. (xfloor x) <==> (inexact->exact (floor x)) (xceiling x) <==> (inexact->exact (ceiling x) (xround x) <==> (inexact->exact (round x)) Bear