anchor.diff:  ;;;-----------------------------------------------------------------------------
   
   (defmethod buffer-clear-output ((buffer single-channel-buffer))
  -  (with-synchronized-single-channel-buffer (buffer)
  +  (with-synchronized-buffer (buffer :input)
       (when (eql :write (last-io-op-of buffer))
         (iobuf-reset (output-iobuf-of buffer)))))
   
   (defmethod buffer-clear-output ((buffer dual-channel-buffer))
  -  (with-synchronized-dual-channel-buffer (buffer :output)
  +  (with-synchronized-buffer (buffer :output)
       (iobuf-reset (output-iobuf-of buffer))))
    
  
positive.code: (defmethod device-write ((buffer single-channel-buffer) vector start end
                           &optional timeout)
    (when (= start end) (return-from device-write 0))
    (with-synchronized-single-channel-buffer (buffer)
      ;; If the previous operation was a read, flush the read buffer
      ;; and reposition the file offset accordingly
      (%buffer-clear-input buffer)
  
negative.code: ;;;-----------------------------------------------------------------------------
  
  (defmethod buffer-fill-input ((buffer single-channel-buffer) &optional timeout)
    (with-synchronized-buffer (buffer :input)
      ;; If the previous operation was a write, try to flush the output buffer.
      ;; If the buffer couldn't be flushed entirely, signal an error
      (synchronize-input buffer)
  