Hi again, So, I checked out the latest version from CVS and it does seem to work. I showed my friend John Tromp (another Rubyist) the problem, and he thinks we are all barking up the wrong tree here: he says the problem is only in strtod and there is no validity to the argument we've convinced ourselves concerning inexact decimal representations making it impossible; he looked at the strtod code in the ruby CVS, and thinks the technique using the table of powers of ten is inherently imprecise. To test this, I changed the ruby_strtod in util.c to call through to the standard libc strtod, and now all the tests pass, even when I deactivate Nobu's load_mantissa. I looked at the strtod used in glibc version 2.3.2 and it uses the MP library to do exact integer arithmetic; I suppose this explains the bug further. It looks like the glibc strtod.c is about 1600 lines -- so it seems a rather tedious but well-defined task to convert this glibc strtod.c to use Nobu's BIGNUM routines solve this bug correctly. Any volunteers? Otherwise I think we will be stuck with a hackish (but working) Marshal representation for Float in Ruby 1.8. Rudi