anchor.diff:      :reader cursor-pair)))
   
   (defmethod print-object ( (sweep %sweep-2-cursor-t) stream )
  -  (format stream "#<%SWEEP-2-CURSOR-T ~A , ~A>"
  +  (format stream "#<%sweep-2 ~A , ~A ~A>"
   	  (first (cursor-pair sweep))
  -	  (second (cursor-pair sweep))))
  +	  (second (cursor-pair sweep))
  +	  (if (done-p sweep) "*" "")))
   
   ;;=========================================================================
   
  
positive.code: ;;;; Define a cursor which sweeps , from left ro right, the values of the
  ;;;; given cursors, retunring the values as a list. 
  (defun cursor/sweep (&rest cursors)
    (make-instance '%sweep-2-cursor-t
  			 :cursors cursors))
  
  ;;=========================================================================
  
  
negative.code:     (error 'cursor-finished-condition
  	   :cursor sweep))
  
    ;; always call next on the first cursor
    ;; if this causes it to be done, call next on the second cursor.
    ;; if it is not done, reset first cursor to keep sweeping
    (let ((prev-value (value sweep))
  	(a (first (cursor-pair sweep)))
  	(b (second (cursor-pair sweep))))
      (next a)
      (when (done-p a)
        (next b)
        (when (not (done-p b)) 
  	(reset a)))
      (values
       prev-value
       (done-p sweep))))
  