anchor.diff:                   (funcall goto-matched-pos res)
                    t)
                  (do () ((funcall endp))
  -                 (funcall step)
  +                 (unless (funcall step)
  +                   (return nil))
                    (let ((res (funcall search)))
                      (when res
                        (funcall goto-matched-pos res)
  
positive.code:                        (search str (take-string)))
                     #'(lambda () (next-line 1))
                     #'(lambda (i)
                         (beginning-of-line)
                         (next-char (+ i (length str))))
                     #'eobp))))
  
  (defun search-backward (str)
    (multiple-value-bind (lines length)
        (split-string str #\newline)
      (flet ((%search (&rest args)
  
negative.code:       (point-set point))
      result))
  
  (defun search-forward (str &optional limit)
    (multiple-value-bind (lines length)
        (split-string str #\newline)
      (flet ((take-string ()
  