anchor.diff:                         (fifo-lock fifo)))))
   
   (defun fifo-reset (fifo)
  -  "Flush any waiting data.
  -May be used from an interrupt handler."
  +  "Flush any waiting data."
     (with-mutex ((fifo-lock fifo))
       (setf (fifo-head fifo) 0
             (fifo-tail fifo) 0)
  
positive.code:            (setf next 0))
           ;; When next reaches head, the buffer is full.
           (unless (= next (fifo-head fifo))
             (setf (svref (fifo-buffer fifo) (fifo-tail fifo)) value
                   (fifo-tail fifo) next)
             (condition-notify (fifo-cv fifo))
             (return t)))
  
negative.code:   "Pop a byte from FIFO.
  Returns two values. The first value is the value popped from the FIFO.
  The second value is true if a value was popped, false otherwise.
  It is only possible for the second value to be false when wait-p is false."
    (with-mutex ((fifo-lock fifo))
      (loop
         (when (not (eql (fifo-head fifo) (fifo-tail fifo)))
           ;; Fifo not empty, pop byte.
           (let ((value (aref (fifo-buffer fifo) (fifo-head fifo)))
                 (next (1+ (fifo-head fifo))))
             (when (>= next (fifo-size fifo))
               (setf next 0))
  