anchor.diff:  
   ;;=========================================================================
   
  +(defmethod clone ( (filter filter-cursor-t) )
  +  (let ((copy (call-next-method)))
  +    (setf (slot-value copy 'filter-f)
  +	  (filter-f filter))
  +    copy))   
  +
  +;;=========================================================================
  +
  +(defmethod done-p ( (filter filter-cursor-t) )
  +  (if (call-next-method)
  +      (return-from done-p t))
  +  (do
  +   ()
  +   ((or
  +     (call-next-method filter)
  +     (funcall (filter-f filter) (%transform/raw-value filter)))
  +    (call-next-method))
  +    (mapcar #'next
  +	    (original-cursors filter))))
  +
  +    
  +
  +
  +;;=========================================================================
  +
   (defmethod value ( (filter filter-cursor-t) )
     (do
      ()
  
positive.code: 
  ;;=========================================================================
  
  
  (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))
    (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)))
  
  
  ;;=========================================================================
  
  
negative.code:   ;; one of two thigs happens:
    ;;   filter-f of values returns true
    ;;   one of the cursors is done
    (let ((old-value (value filter)))     ; safe to call (value ) since (done-p)
  					; was called first which means we will
  					; no go into infinite loop here
      (call-next-method)
      (do
       ()
       ((or
         (done-p filter)
         (funcall (filter-f filter) (%transform/raw-value filter)))
        nil)
        (call-next-method))
      (values
  