anchor.diff:               (err "Multiple /'s in number"))
               ((>= (count #\. string) 2)
                (err "Multiple .'s in number"))
  -            ((>= (count-if #'exponent-marker-p string)
  +            ((>= (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 #'exponent-marker-p 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 ~:[~
  
positive.code: 	     (if (not (and pos-left pos-right (< pos-left pos-right)
  			   (eql (count #\( string) 1)
  			   (eql (count #\) string) 1)))
  		 (invalid-number string "Mismatched parenthesis")
  		 (let* ((starting-left (position-if-not #'whitespace-p string :start (+ pos-left 1)))
  			(delimiting-left (position-if #'whitespace-p string :start starting-left))
  			(starting-right (position-if-not #'whitespace-p string :end pos-right :from-end t))
  
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)
  