 	    (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)

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

    ;; this next piece of code 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

	  (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 transaction at point in the reconcile buffer."
  (if (member this-command (list 'next-line
				 'previous-line
				 'mouse-set-point
