I hate to report a bug in my own handiwork, but I noticed this morning, while writing a scheme numerics test suite (numtst.c in the Snd tools directory), that if the error is 1.0, rationalize rounds the wrong way:
guile> (rationalize 0.1 1.0) 1.0 guile> (rationalize -0.9 1.0) 0.0 Rats. I'll try to look at libguile/numbers.c soon.
