anchor.diff:  (defun make-exp-whole-float (radix marker whole exponent)
     "Make an float where MARKER is the exponent-marker, WHOLE is the whole
      part and EXPONENT is the exponent."
  -  (make-exp-float radix marker whole *zero* exponent))
  +  (declare (ignore radix))
  +  (* (value whole)
  +     (expt (base-for-exponent-marker marker)
  +	   (value exponent))))
   
   (defun make-exp-float (radix marker whole frac exponent)
     "Build a float whose whole part is WHOLE, fractional part is FRAC,
      and exponent is EXPONENT. MARKER is the exponent-marker of the float."
  -  (* (expt (base-for-exponent-marker marker) (value exponent))
  -     (+ (value whole)
  -        (/ (value frac) (expt radix (num-digits frac))))))
  +  (let* ((base (base-for-exponent-marker marker))
  +	 (exp (expt base (value exponent))))
  +    (+ (* exp (value whole))
  +       (/ (* exp (value frac))
  +	  (expt (float radix base)
  +		(num-digits frac))))))
   
   (defparameter *reader-macro-vals*
     '((#\B 2) (#\O 8) (#\X 16))
  
positive.code: 		     (invalid-number-value c)
                       (invalid-number-reason c)))))
  
  (defun invalid-number (string reason)
    "Given a string for a value and a reason, signal an 'invalid-number'
     error with the given arguments."
    (error 'invalid-number :value string :reason reason))
  
negative.code: 
  (defun parse-trimmed-positive-real-number (string radix)
    "Parse a positive real number from a string that has been trimmed."
    (macrolet ((err (reason) `(invalid string ,reason)))
      (let ((first-char (char string 0))
            (last-char  (char string (- (length string) 1))))
        (cond ((eql (length string) 0)
  