anchor.diff:             (return-from read-ratio))
            (setf denominator (+ (* denominator *read-base*)
                                 weight))))
  +    (when (zerop denominator)
  +      (error 'simple-reader-error :stream stream
  +             :format-control "Invalid ratio, dividing by zero: ~A"
  +             :format-arguments (list string)))
       (/ numerator denominator)))
   
   (defvar *exponent-markers* "DdEeFfLlSs")
  
positive.code:       ;; Attempt to parse a number.
        (t (or (read-integer token)
               (read-float token)
               (read-ratio token)
               (intern token))))))
  
  (defun read-ratio (string)
    ;; ratio = sign? digits+ slash digits+
    (let ((numerator nil)
          (denominator nil)
  
negative.code:             (case ch
                (#\0 (vector-push-extend 0 bits))
                (#\1 (vector-push-extend 1 bits))
                (t (error 'simple-reader-error :stream stream
                          :format-control "Invalid character ~S in #*."
                          :format-arguments (list ch))))))
      (when (and p (not (zerop p)) (zerop (length bits)))
        (error 'simple-reader-error :stream stream
               :format-control "Need at least one bit for #* with an explicit length."
               :format-arguments '()))
      (when (and p (> (length bits) p))
        (error 'simple-reader-error :stream stream
               :format-control "Too many bits."
               :format-arguments '()))
      (let ((final-array (make-array (or p (length bits))
                                     :element-type 'bit)))
        (unless (zerop (length final-array))
  