anchor.diff:  		 (+ key-pos 2)))
   	list)))
   
  -(defun cursor/filter (&key filter-func 
  +(defun cursor/filter (&key
  +			filter-func 
   			cursors 
   			(trans-func #'list))
     (make-instance 'filter-cursor-t
  
positive.code:   ;; one of two thigs happens:
    ;;   filter-f of values returns true
    ;;   one of the cursors is done
    (let ((old-value (value filter)))
      (call-next-method)
      (do
       ()
       ((or
         (done-p filter)
         (funcall (filter-f filter) (value filter)))
        nil)
        (call-next-method))
      (values
  
negative.code: 
  ;;=========================================================================
  
  (defun %transform/raw-value ( tc )  
    (let ((original-values
  	 (mapcar #'(lambda (cursor default)
  		     (if (done-p cursor)
  			 default
  			 (value cursor)))
  		 (original-cursors tc)
  		 (default-values tc))))
      (apply (transform-f tc) original-values)))
  
  
  (defmethod value ( (tc transform-cursor-t))
    (when (done-p tc)
      (error 'cursor-finished-condition
  	   "Cursor ~A is finished but you tried to access it's (value...)"
  	   :cursor tc))
    (%transform/raw-value tc))
  
  ;;=========================================================================
  
  