anchor.diff:                (incf cursor-y line-height))
            when (or (>= (y2 (line-dimensions line)) pane-height)
                     (= (line-end-offset line) (size (buffer view))))
  -         return (clear-stale-lines pane view)))))
  +         return (progn
  +                  (setf (offset (bot view)) (line-end-offset line))
  +                  (clear-stale-lines pane view))))))
   
   (defun offset-in-stroke-position (stream view stroke offset)
     "Calculate the position in device units of `offset' in
  
positive.code: (defun page-up (view)
    (with-accessors ((top top) (bot bot)) view
      (when (> (offset top) 0)
        (let ((nb-lines-in-region (number-of-lines-in-region top bot)))
          (setf (offset bot) (offset top))
          (end-of-line bot)
          (loop repeat nb-lines-in-region
             while (> (offset top) 0)
             do (decf (offset top))
             (beginning-of-line top))
          (setf (offset (point view)) (offset bot))
          (beginning-of-line (point view))
          (invalidate-all-strokes view)))))
  
  (defgeneric fix-pane-viewport (pane view)
    (:documentation "Fix the size and scrolling of `pane', which
  
negative.code: reposition the pane if point is outside the visible area."
    (with-accessors ((buffer buffer) (top top) (bot bot)
                     (point point)) (view drei-pane)
      (beginning-of-line top)
      (when (or (mark< point top)
                (mark> point bot))
        (reposition-pane drei-pane))))
  
  (defun page-down (view)
    (with-accessors ((top top) (bot bot)) view
  