anchor.diff:        (multiple-value-bind (width height ignore1 ignore2 baseline)
   	  (text-size medium string)
   	(declare (ignore ignore1 ignore2))
  +	(if (not (slot-boundp trec 'start-y))
  +	    (with-slots (start-x start-y end-x end-y) trec
  +	      (multiple-value-bind (cx cy) (stream-cursor-position stream)
  +		(setq start-x cx
  +		      start-y cy
  +		      end-x cx
  +		      end-y cy))))
   	(add-string-output-to-text-record trec string start end
   					  (medium-text-style medium)
   					  width height baseline))))
  
positive.code: (defmethod add-character-output-to-text-record ((text-record text-displayed-output-record)
  						character text-style width height
  						new-baseline)
    (with-slots (strings baseline max-height end-x) text-record
      (setq baseline new-baseline
  	  strings (nconc strings (list (list end-x text-style (make-string 1 :initial-element character))))
  	  end-x (+ end-x width)
  	  max-height (max max-height height)
  	  )))
  
  (defmethod add-string-output-to-text-record ((text-record text-displayed-output-record)
  					     string start end text-style width height
  
negative.code:   (let ((trec (stream-current-output-record stream)))
      (unless (text-displayed-output-record-p trec)
        (setq trec (make-instance 'text-displayed-output-record))
        (add-output-record trec (stream-output-history stream))
        (setf (stream-current-output-record stream) trec))
      trec))
  
  (defmethod stream-write-char :around ((stream output-recording-stream) char)
    (when (stream-recording-p stream)
      (cond
       ((or (eql char #\return)
  	  (eql char #\newline))
        (let ((trec (make-instance 'text-displayed-output-record)))
  	(add-output-record trec (stream-output-history stream))
  	(setf (stream-current-output-record stream) trec)))
       (t
        (let ((medium (sheet-medium stream))
  	    (trec (get-text-record stream)))
  	  (multiple-value-bind (width height ignore1 ignore2 baseline)
  	      (text-size medium (string char))
  	  (declare (ignore ignore1 ignore2))
  	  (if (not (slot-boundp trec 'start-y))
  	      (with-slots (start-x start-y end-x end-y) trec
  		(multiple-value-bind (cx cy) (stream-cursor-position stream)
  		  (setq start-x cx
  			start-y cy
  			end-x cx
  			end-y cy))))
  	  (add-character-output-to-text-record trec char
  					       (medium-text-style medium)
  					       width height baseline))))))
    (call-next-method))
  
  (defmethod stream-write-string :around ((stream output-recording-stream) string
  