This kind of bug has bitten me before, so I think it's worthwhile for Emacs to defend against it better. Proposed patch attached. Although this patch doesn't address the major problem here (which is that Emacs lacks bignums), it does cause Emacs to respond better to large numbers, by not losing information when it is reading or printing integers. With this patch, one cannot evaluate (format "%x" 2738188573457603759) because the Lisp reader signals an error when it sees the unrepresentable integer 2738188573457603759, instead of silently substituting a different number. Another example: (format "%d" 18446744073709551616) now returns "18446744073709551616" instead of the quite-wrong "9223372036854775807".