Nice explanation - thanks.
The integer values being output for the OP appeared to be 54-bit precision, and that threw me somewhat.
But I was excluding only the trailing zero bits from the precision count, while I should also have been excluding the leading zero bits.
It all makes sense now ... for some definition of "makes sense" ;-)
Actually, it was your reply that triggered something in my head ("hmm, isn't it doubles that contain fifty something bits of the fraction?") and made me investigate.