anchor.diff:  ;;;        from soft end-of-files (EOF and *some* bytes still in the buffer
   ;;;        but not enough to make a full character)
   (defmethod stream-read-char ((stream dual-channel-gray-stream))
  -  (with-accessors ((fd input-fd-of) (ib input-buffer-of)
  +  (with-accessors ((fd input-fd-of)
  +                   (ib input-buffer-of)
                      (unread-index ibuf-unread-index-of)
  -                   (ef external-format-of)) stream
  +                   (ef external-format-of))
  +      stream
       (setf unread-index (iobuf-start ib))
       (let ((str nil)
             (ret nil))
         (flet ((fill-buf-or-eof ()
                  (setf ret (%fill-ibuf ib fd))
  -               (when (eql ret :eof)
  +               (when (eq ret :eof)
                    (return-from stream-read-char :eof))))
           (cond ((zerop (iobuf-length ib))
                  (iobuf-reset ib)
  
positive.code: (defun %stream-unread-char (stream)
    (declare (type dual-channel-gray-stream stream))
    (with-accessors ((ib input-buffer-of)
                     (unread-index ibuf-unread-index-of)) stream
      (symbol-macrolet ((start (iobuf-start ib)))
        (cond
          ((> start unread-index) (setf start unread-index))
  
negative.code: 
  (defmethod stream-peek-char ((stream dual-channel-gray-stream))
    (let ((char (stream-read-char stream)))
      (cond ((eq char :eof) :eof)
            (t (%stream-unread-char stream)
               (values char)))))
  
  