 	    (set (make-local-variable 'ledger-acct) account))))
     
     ;; Fold the ledger buffer
-    (if ledger-fold-on-reconcile
-	(ledger-occur-mode account buf))
 
     ;; Now, actually run the reconciliation
     (with-current-buffer rbuf
+      (save-excursion
+	(if ledger-fold-on-reconcile
+	    (ledger-occur-mode account ledger-buf)))
       (ledger-reconcile-refresh)
       (goto-char (point-min))
       (ledger-reconcile-change-target)

	  (recenter -1))
        (select-window recon-window)
        (ledger-reconcile-visit t))
      (add-hook 'post-command-hook 'ledger-reconcile-track-xact nil t))))

(defun ledger-reconcile-track-xact ()
  "Force the ledger buffer to recenter on the transactionat point in the reconcile buffer."
  (if (member this-command (list 'next-line
				 'previous-line
				 'mouse-set-point

    (set-buffer-modified-p nil)
    (toggle-read-only t)

    (ledger-reconcile-ensure-xacts-visible)))

(defun ledger-reconcile-ensure-xacts-visible ()
  "Ensures that the last of the visible transactions in the
ledger buffer is at the bottom of the main window.  The key to
this is to ensure the window is selected when the buffer point is
moved and recentered.  If they aren't strange things happen."
    
    (let ((recon-window (get-buffer-window (get-buffer ledger-recon-buffer-name))))
      (when recon-window
