anchor.diff:            (endp
              (m :end end))
             (t
  -           (m)))))+           (m)))))
  
positive.code:                      (lambda (marker)
                         (search-from-end marker nil))
                       (lambda (marker)
                         (line-offset marker -1))
                       (lambda (marker charpos)
                         (unless (zerop nlines)
                           (line-offset marker (- nlines)))
  
negative.code:                (points-to-string (line-start start-marker)
                                   (line-end (line-offset end-marker nlines))))))
        (search-step marker
                     (lambda (marker)
                       (search* string
                                (take-string marker)
                                :start2 (marker-charpos marker)))
                     (lambda (marker)
                       (search* string (take-string marker)))
                     (lambda (marker)
                       (nth-value 1 (line-offset marker 1)))
                     (lambda (marker charpos)
                       (character-offset (line-start marker)
                                         (+ charpos (length string))))
                     (search-forward-endp-function limit-marker)))))
  
  (defun search-backward (marker string &optional limit-marker)
    (let ((nlines (count #\newline string)))
  