anchor.diff:         finally (return (column-number mark))))
   
   (defgeneric insert-buffer-object (buffer offset object)
  -  (:documentation "Insert the object at the offset in the buffer.  Any left-sticky marks
  - that are placed at the offset will remain positioned before the
  - inserted object.  Any right-sticky marks that are placed at the
  - offset will be positioned after the inserted object."))
  +  (:documentation "Insert the object at the offset in the buffer.
  +Any left-sticky marks that are placed at the offset will remain
  +positioned before the inserted object.  Any right-sticky marks
  +that are placed at the offset will be positioned after the
  +inserted object."))
   
   (defmethod insert-buffer-object ((buffer standard-buffer) offset object)
     (assert (<= 0 offset) ()
  
positive.code:     (setf (offset mark) offset)))
  
  (defgeneric buffer-line-number (buffer offset)
    (:documentation "Return the line number of the offset.  Lines are numbered from zero."))
  
  (defmethod buffer-line-number ((buffer standard-buffer) (offset integer))
    (loop for i from 0 below offset
  	count (eql (buffer-object buffer i) #\Newline)))
  
  (defgeneric buffer-column-number (buffer offset)
    (:documentation "Return the column number of the offset. The column number of an offset is
   the number of objects between it and the preceding newline, or
   between it and the beginning of the buffer if the offset is on the
   first line of the buffer."))
  
  (defmethod buffer-column-number ((buffer standard-buffer) (offset integer))
    (loop for i downfrom offset
  
negative.code: 
  (defgeneric beginning-of-buffer (mark)
    (:documentation "Move the mark to the beginning of the buffer.
  This is equivalent to `(setf (offset mark) 0)', but returns
  mark."))
  
  ;; Easy way to make sure mark is always returned.
  (defmethod beginning-of-buffer :around (mark)
  