anchor.diff:          (and (fixnum-fits-in-double-float-p y)
                (sys.int::%%double-float-= x (float y 0.0d0))))
          (bignum
  -        (= (%%truncate-double-float-to-integer x) y))
  +        (if (and (or (sys.int::%%double-float-< sys.int::most-negative-fixnum-double-float x)
  +                     (sys.int::%%double-float-< x sys.int::most-positive-fixnum-double-float))
  +                 (not (sys.int::float-infinity-p x)))
  +            (= (%%truncate-double-float-to-integer x) y)
  +            nil))
          (ratio
           (ratio-= (rational x) y))
          (single-float
  
positive.code:        (bignum (sys.int::%%bignum-= x y))
         (ratio nil)
         (single-float
          (= x (%%truncate-single-float-to-integer y)))
         (double-float
          (= x (%%truncate-double-float-to-integer y)))
         (sys.int::complex-rational nil)
         ((sys.int::complex-single-float
           sys.int::complex-double-float)
  
negative.code:            (%%coerce-fixnum-to-double-float fixnum))
            fixnum)))
  
  (defun sys.int::generic-= (x y)
    (number-dispatch x
      (fixnum
  