anchor.diff:  
   ;;; Device buffer functions
   
  -(defgeneric zstream-io-position (buffer))
  -
  -(defgeneric (setf zstream-io-position) (position buffer &optional from))
  -
  -(defgeneric zstream-input-position (buffer))
  -
  -(defgeneric (setf zstream-input-position) (position buffer &optional from))
  -
  -(defgeneric zstream-output-position (buffer))
  -
  -(defgeneric (setf zstream-output-position) (position buffer &optional from))
  +(defgeneric zstream-position (buffer &key direction))
  +
  +(defgeneric (setf zstream-position) (position buffer &key direction from))
   
   (defgeneric zstream-poll (buffer &key direction timeout))
   
  
positive.code: 
  (defmethod zstream-fill-input ((buffer single-channel-buffer) &key timeout)
    (with-synchronized-buffer (buffer :input)
      (%zstream-flush-output buffer)
      (%zstream-fill-input buffer timeout)))
  
  (defmethod zstream-fill-input ((buffer dual-channel-buffer) &key timeout)
  
negative.code: 
  
  ;;;-------------------------------------------------------------------------
  ;;; POSITION
  ;;;-------------------------------------------------------------------------
  
  (defmethod zstream-position ((buffer single-channel-buffer) &key direction)
    (declare (ignore direction))
    (with-synchronized-buffer (buffer :input)
      (let ((position (device-position (zstream-device buffer))))
        ;; FIXME: signal proper condition
  