anchor.diff:    (with-output-recording-options (stream :record t :draw nil)
       (map-over-updating-output
        #'(lambda (r)
  -	 (setf (old-children r) (sub-record r))
  -	 (setf (output-record-dirty r) :updating)
  -	 (setf (rectangle-edges* (old-bounds r))
  -	       (rectangle-edges* (sub-record r))))
  +         (let ((sub-record (sub-record r)))
  +           (setf (old-children r) sub-record)
  +           (setf (output-record-dirty r) :updating)
  +           (setf (rectangle-edges* (old-bounds r))
  +                 (rectangle-edges* sub-record))))
        record
        nil)
       (finish-output stream)
  
positive.code:                        (dy (- cy sy)))
                     (unless (zerop dy)
                       (move-output-record record dx dy) )
                     (let ((tag (cond ((= dx dy 0) :clean)
                                      (t :moved))))
                       (setf (output-record-dirty record) tag)
                       (setf (output-record-parent record) nil)
                       (map-over-updating-output #'(lambda (r)
  
negative.code:     ((record standard-updating-output-record) stream displayer)
    (multiple-value-bind (x y)
        (output-record-position record)
      (let ((sub-record (sub-record record)))
        (when sub-record
          (delete-output-record sub-record record)))
      ;; Don't add this record repeatedly to a parent updating-output-record.
      (unless (eq (output-record-parent record)
  		(stream-current-output-record stream))
  