Hi Jozef, I guess that on your system, (* 65536 65536) evaluates to 0. Is that right? If so, I believe the problem is caused by an aggressive optimization in recent versions of Clang, which breaks Guile's logic for detecting overflow when multiplying two fixnums. Currently, Guile computes kk = xx * yy and checks for overflow by verifying that kk / xx == yy. I believe that Clang is optimizing out the check, because recent C standards permit C implementations to assume that signed integer arithmetic will never overflow. For details, see: http://blog.llvm.org/2011/05/what-every-c-programmer-should-know.html One solution is to compile with the "-fwrapv" option, which should disable the optimization. Another solution is to apply the following patch. Jozef, would you be willing to test this patch and tell me if it fixes the problem? Many thanks, Mark