anchor.diff:  		     (invalid-number-value c)
                        (invalid-number-reason c)))))
   
  -(defun invalid-number (string reason)
  +(defun invalid (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))
  
positive.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-number string ,reason)))
      (let ((first-char (char string 0))
            (last-char  (char string (- (length string) 1))))
        (cond ((eql (length string) 0)
  
negative.code:              (err "Multiple /'s in number"))
              ((>= (count #\. string) 2)
               (err "Multiple .'s in number"))
              ((>= (count-if (lambda (c)
  			     (exponent-marker-p c radix))
  			   string)
                   2)
               (err "Multiple exponent markers in number"))
              (:else
               (let ((.-pos (position #\. string))
                     (/-pos (position #\/ string))
                     (exp-pos (position-if (lambda (c)
  					   (exponent-marker-p c radix))
  					 string)))
                 (cond ((and (/= radix 10) (or exp-pos .-pos))
                        (err (format nil
                                     "Only decimal numbers can contain ~:[~
  