anchor.diff:               ((not res)
                 (when pres
                   (incf (buffer-undo-node buffer))
  -                (queue:enqueue (buffer-undo-stack buffer) :separator)
  +                (push :separator (buffer-undo-stack buffer))
                   (buffer-undo-modified buffer))
                 pres))))
   
  
positive.code:     (setf (buffer-mark-col buffer) 0)
      (setf (buffer-nlines buffer) 1)
      (setf (buffer-undo-size buffer) 0)
      (setf (buffer-undo-stack buffer) (queue:make-queue *undo-limit*))
      (setf (buffer-redo-stack buffer) nil)
      (setf (buffer-undo-node buffer) 0)
      (setf (buffer-saved-node buffer) 0)
  
negative.code:           (funcall elt))))))
  
  (defun buffer-undo (buffer)
    (loop while (eq :separator (car (buffer-undo-stack buffer)))
      do (pop (buffer-undo-stack buffer)))
    (prog1 (do ((res #1=(buffer-undo-1 buffer) #1#)
                (pres nil res))
               ((not res)
  