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: 
  
  ;;;-------------------------------------------------------------------------
  ;;; IO-POSITION
  ;;;-------------------------------------------------------------------------
  
  (defmethod zstream-io-position ((buffer single-channel-buffer))
    (with-synchronized-buffer (buffer :input)
      (let ((position (device-position (zstream-device buffer))))
        ;; FIXME: signal proper condition
  
negative.code:   (unless (%scb-dirtyp buffer)
      (let ((nbytes (iobuf-available-octets (%db-input-iobuf buffer))))
        (unless (zerop nbytes)
          (setf (%db-position buffer :current) (- nbytes)))
        (iobuf-reset (%db-input-iobuf buffer)))))
  
  (defmethod %zstream-clear-input ((buffer dual-channel-buffer))
  