anchor.diff:    (prog1 (do ((res #1=(buffer-undo-1 buffer) #1#)
                 (pres nil res))
                ((not res) pres))
  -    (push :separator (buffer-redo-stack buffer))))
  +    (decf (buffer-undo-node buffer))
  +    (push :separator (buffer-redo-stack buffer))
  +    (buffer-undo-modified buffer)))
   
   (defun buffer-redo-1 (buffer)
     (let ((elt (pop (buffer-redo-stack buffer))))
       (when elt
         (let ((*undo-mode* :redo))
           (unless (eq elt :separator)
  -          (incf (buffer-undo-node buffer))
             (funcall elt))))))
   
   (defun buffer-redo (buffer)
  
positive.code:                (1+ (length (buffer-undo-stack buffer)))))
          (t
           (incf (buffer-undo-size buffer))))
    (when-interrupted-flag :undo
                           (push :separator
                                 (buffer-undo-stack buffer)))
    (push elt (buffer-undo-stack buffer)))
  
  (defun push-redo-stack (buffer elt)
    (push elt (buffer-redo-stack buffer)))
  
negative.code:   (prog1 (do ((res #1=(buffer-redo-1 buffer) #1#)
                (pres nil res))
               ((not res) pres))
      (incf (buffer-undo-node buffer))
      (push :separator (buffer-undo-stack buffer))
      (buffer-undo-modified buffer)))
  
  (defun buffer-get (buffer indicator &optional default)
    (getf (buffer-plist buffer) indicator default))
  