anchor.diff:                     (single-float +single-float-digits+)
                      (double-float +double-float-digits+)))
            (scale 0))
  -    (declare (fixnum digits scale))
  +    (declare (type fixnum digits scale))
       ;; Strip any trailing zeros from the denominator and move it into the scale
       ;; factor (to minimize the size of the operands.)
       (let ((den-twos (1- (integer-length (logxor den (1- den))))))
  -      (declare (fixnum den-twos))
  +      (declare (type fixnum den-twos))
         (decf scale den-twos)
         (setq den (ash den (- den-twos))))
       ;; Guess how much we need to scale by from the magnitudes of the numerator
  
positive.code:           (multiple-value-bind (fraction-and-guard rem)
                (truncate shifted-num den)
              (let ((extra (- (integer-length fraction-and-guard) digits)))
                (declare (fixnum extra))
                (cond ((/= extra 1)
                       (assert (> extra 1)))
                      ((oddp fraction-and-guard)
  
negative.code:            (delta (- den-len num-len))
             (shift (1+ (the fixnum (+ delta digits))))
             (shifted-num (ash num shift)))
        (declare (type fixnum delta shift))
        (decf scale delta)
        (labels ((float-and-scale (bits)
                   (let* ((bits (ash bits -1))
  