   "The default commodity for use in target calculations in ledger reconcile."
   :type 'string
   :group 'ledger-reconcile)
+
+(defcustom ledger-scale  10000
+	"The 10 ^ maximum number of digits you would expect to appear in your reports.
+This is a cheap way of getting around floating point silliness in subtraction")
 
 (defun ledger-split-commodity-string (str)
   "Split a commoditized string, STR, into two parts.

(defun -commodity (c1 c2)
  "Subtract C2 from C1, ensuring their commodities match."
  (if (string= (cadr c1) (cadr c2))
      (list (- (car c1) (car c2)) (cadr c1))
      (error "Can't subtract different commodities %S from %S" c2 c1)))

(defun +commodity (c1 c2)

								(setq new-str (append new-str (list ch))))))))

(defun ledger-string-to-number (str &optional decimal-comma)
	"improve builtin string-to-number by handling internationalization, and return nil if number can't be parsed"
	(let ((nstr (if (or decimal-comma
											(assoc "decimal-comma" ledger-environment-alist))
									(ledger-strip str ?.)
