anchor.diff:  reposition the pane if point is outside the visible area."
     (with-accessors ((buffer buffer) (top top) (bot bot)
                      (point point)) (view drei-pane)
  -    (let ((nb-lines-in-pane (nb-lines-in-pane drei-pane)))
  -      (beginning-of-line top)
  -      (end-of-line bot)
  -      (when (or (mark< point top)
  -                (>= (number-of-lines-in-region top point)
  -                    nb-lines-in-pane))
  -        (reposition-pane drei-pane))))
  -  (adjust-pane-bot 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
  
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:               (incf cursor-y line-height))
           when (or (>= (y2 (line-dimensions line)) pane-height)
                    (= (line-end-offset line) (size (buffer 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
  