anchor.diff:  ;;;programmer forcing all new output.
   
   (defun state-matches-stream-p (state stream)
  -  (multiple-value-bind (cx cy)
  -      (stream-cursor-position stream)
  +  (multiple-value-bind (cx cy) (stream-cursor-position stream)
       (with-sheet-medium (medium stream)
  -      (match-output-records state :cursor-x cx :cursor-y cy))))
  +      ;; Note: We don't match the y coordinate.
  +      (match-output-records state :cursor-x cx))))
   
   (define-protocol-class updating-output-record (output-record))
   
  
positive.code: 	     ;; parent's sequence of records
  	     (when *trace-updating-output*
  	       (format *trace-output* "clean ~S~%" record))
  	     (setf (output-record-dirty record) :clean)
  	     (setf (output-record-parent record) nil)
  	     (map-over-updating-output #'(lambda (r)
  					   (setf (output-record-dirty r)
  						 :clean))
  				       record
  				       nil)
  	     (add-output-record record (stream-current-output-record stream))
  	     (set-medium-graphics-state (end-graphics-state record) stream)
  	     (setf (parent-cache record) parent-cache)))
        record)))
  
  ;;; The Franz user guide says that updating-output does
  
negative.code: 
  (defvar *no-unique-id* (cons nil nil))
  
  (defun move-output-record (record dx dy)
    (multiple-value-bind (sx sy) (output-record-start-cursor-position record)
      (multiple-value-bind (ex ey) (output-record-end-cursor-position record)
        (setf (output-record-position record)
              (values (+ (nth-value 0 (output-record-position record)) dx)
                      (+ (nth-value 1 (output-record-position record)) dy)))
        (setf (output-record-start-cursor-position record)
              (values (+ sx dx) (+ sy dy)))
        (setf (output-record-end-cursor-position record)
              (values (+ ex dx) (+ ey dy))))))
  
  (defmethod invoke-updating-output ((stream updating-output-stream-mixin)
  				   continuation
  				   record-type
  