anchor.diff:                           pos
                            (- (marker-charpos marker) n)))))
              (setf (car del-lines)
  -                 (fat-concat (car del-lines)
  -                             (fat-substring (line-fatstr line) pos (+ pos n))))
  +                 (concatenate 'string
  +                              (car del-lines)
  +                              (subseq (line-str line) pos (+ pos n))))
              (setf (line-fatstr line)
                    (fat-concat (fat-substring (line-fatstr line) 0 pos)
                                (fat-substring (line-fatstr line) (+ pos n))))
  
positive.code:                      (buffer-tail-line buffer))
               (setf (buffer-tail-line buffer) line))
             (line-free (line-next line)))))
        (setq del-lines
              (mapcar #'fat-string
                      (nreverse del-lines)))
        (with-push-undo (buffer)
          (let ((linum linum)
                (pos pos))
  
negative.code: (defun buffer-delete-char (buffer linum pos n)
    (with-buffer-modify buffer
      (let ((line (buffer-get-line buffer linum))
            (del-lines (list "")))
        (loop while (or (eq n t) (plusp n)) do
          (cond
            ((and (not (eq n t))
  