anchor.diff:                                   (1- winwidth)
                                    (window-height window))))
           (decf (window-width window) winwidth)
  -        (split-window-after newwin :hsplit)))))
  +        (split-window-after window newwin :hsplit)))))
   
   (define-key *global-keymap* (kbd "C-x 3") 'split-active-window-horizontally)
   (define-command split-active-window-horizontally () ()
  
positive.code:           (window-recenter window)
            (window-scroll window offset)))))
  
  (defun split-window-after (new-window split-type)
    (let ((current-window (current-window)))
      (window-set-size current-window
                       (window-width (current-window))
                       (window-height (current-window)))
      (setf (window-vtop-linum new-window)
            (window-vtop-linum current-window))
      (setf (window-current-linum new-window)
            (window-current-linum current-window))
      (setf (window-current-charpos new-window)
            (window-current-charpos current-window))
      (multiple-value-bind (node getter setter)
          (window-tree-parent (window-tree) current-window)
        (if (null node)
            (setf (window-tree)
                  (make-window-node split-type
                                    current-window
                                    new-window))
            (funcall setter
                     (make-window-node split-type
                                       (funcall getter)
                                       new-window))))
      t))
  
  (defun split-window-vertically (window)
    (unless (minibuffer-window-p window)
  
negative.code:                                  (window-width window)
                                   winheight)))
          (decf (window-height window) winheight)
          (split-window-after window newwin :vsplit)))))
  
  (define-key *global-keymap* (kbd "C-x 2") 'split-active-window-vertically)
  (define-command split-active-window-vertically () ()
  