anchor.diff:    (cond
       ((plusp n)
        (do ((n n (1- n))
  -          (linum (point-linum point) (1+ linum))
             (line (point-line point) (line-next line)))
            ((null line) nil)
          (when (zerop n)
  -         (%move-to-position point linum line charpos)
  +         (%move-to-position point line charpos)
            (return point))))
       ((minusp n)
        (do ((n n (1+ n))
  -          (linum (point-linum point) (1- linum))
             (line (point-line point) (line-prev line)))
            ((null line) nil)
          (when (zerop n)
  -         (%move-to-position point linum line charpos)
  +         (%move-to-position point line charpos)
            (return point))))
       (t
        (setf (point-charpos point)
  
positive.code:   ;; この関数はlineでpointを管理するときに色々することになる
    (setf (point-line point) line))
  
  (defun %move-to-position (point linum line charpos)
    (let ((buffer (point-buffer point)))
      (assert (line-alive-p line))
      (assert (<= 1
                  linum
                  (buffer-nlines buffer)))
      (assert (<= 0 charpos))
      (%change-line point line)
      (setf (point-linum point) linum)
      (setf (point-charpos point) (min (line-length line) charpos)))
    point)
  
  (defun move-point (point new-point)
    (%move-to-position point
                       (point-linum new-point)
                       (point-line new-point)
                       (point-charpos new-point)))
  
  
negative.code:                            0)
                         (if lastp
                             (point-charpos end)
                             nil))
            :until lastp))
    (values))
  
  (defun map-region (start end function)
  