anchor.diff:  (defun read-common (stream eof-error-p eof-value recursive-p)
     (let ((*read-lookahead-table* (if recursive-p
                                       *read-lookahead-table*
  -                                    (make-hash-table))))
  +                                    (make-hash-table)))
  +        (*read-package* (or (and recursive-p
  +                                 *read-package*)
  +                            *package*)))
       ;; Skip leading whitespace.
       (loop (let ((c (read-char stream eof-error-p 'nil t)))
               (when (eql c 'nil)
  
positive.code:                            token (make-array 16
                                               :element-type 'character
                                               :adjustable t
                                               :fill-pointer 0)))))
                (t (vector-push-extend (case-correct x) token)))))
      ;; Check for invalid uses of the dot. Tokens that are constructed
      ;; entirely from dots are invalid unless one or more of the dots was
  
negative.code:       ;; If an escape character was seen, then do not try to parse the token as
        ;; an number, intern it and return it immediately.
        (seen-escape
         (intern token *read-package*))
        ;; Attempt to parse a number.
        (t (or (read-integer token)
               (read-float token)
               (read-ratio token stream)
               (intern token *read-package*))))))
  
  (defun read-ratio (string stream)
    ;; ratio = sign? digits+ slash digits+
  