just to follow up -- not as an argument, but to add data -- this inaccurate printout happens with smaller numbers (in the 2^50 range), and as noted by others, the internal representation seems ok. Here's another example:
guile> 1000000000000007.0
1000000000000010.0
guile> (odd? 1000000000000007.0)
#t
guile> (even? 1000000000000007.0)
#f
("It's an *inexact* integer, ferchrissake")
