 		(push newcar result)
 		(push (ledger-auto-parse-date-descriptor newcar) result)) )
 	  (setq tree (cdr tree)))
+
+	;; tie up all the clauses in a big or and lambda
 	`(lambda (date) 
 	   ,(nconc (list 'or) (nreverse result) tree)))))
 

;; use (fset 'VARNAME (macro args)) to put the macro definition in the
;; function slot of the symbol VARNAME.  Then use VARNAME as the
;; function without have to use funcall.

(defsubst between (val low high)
  (and (>= val low) (<= val high)))

  "Return true if DATE is a holiday.")

(defun ledger-auto-scan-transactions (auto-file)
  "Scans AUTO_FILE and returns a list of transactions with date predicates.
The car of each item is a fuction of date that returns true if
the transaction should be logged for that day."
  (interactive "fFile name: ")
  (let ((xact-list (list)))
    (with-current-buffer
