anchor.diff:             (delta (- den-len num-len))
              (shift (1+ (the fixnum (+ delta digits))))
              (shifted-num (ash num shift)))
  -      (declare (fixnum delta shift))
  +      (declare (type fixnum delta shift))
         (decf scale delta)
         (labels ((float-and-scale (bits)
                    (let* ((bits (ash bits -1))
  
positive.code:                    (single-float +single-float-digits+)
                     (double-float +double-float-digits+)))
           (scale 0))
      (declare (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))
        (decf scale den-twos)
        (setq den (ash den (- den-twos))))
      ;; Guess how much we need to scale by from the magnitudes of the numerator
  
negative.code:           (multiple-value-bind (fraction-and-guard rem)
                (truncate shifted-num den)
              (let ((extra (- (integer-length fraction-and-guard) digits)))
                (declare (type fixnum extra))
                (cond ((/= extra 1)
                       (assert (> extra 1)))
                      ((oddp fraction-and-guard)
  