--- src.orig/report/standard-reports/budget.scm	2008-01-12 17:04:46.000000000 +0100
+++ src/report/standard-reports/budget.scm	2008-07-11 11:11:08.000000000 +0200
@@ -110,20 +110,35 @@
            (period 0)
            )
       (while (< period num-periods)
-             (let* ((bgt-col (+ (* period 2) colnum 1))
+             (let* ((bgt-col (+ (* period 3) colnum 1))
                     (act-col (+ 1 bgt-col))
+                    (dif-col (+ 1 act-col))
 
                     (comm (xaccAccountGetCommodity acct))
+
+                    ;; budgeted amount
                     (bgt-unset? (not (gnc-budget-is-account-period-value-set 
                                       budget acct period)))
-                    (numeric-val (gnc-budget-get-account-period-value
+                    (bgt-numeric-val (gnc-budget-get-account-period-value
                                   budget acct period))
 
                     (bgt-val (if bgt-unset? "."
-                                 (gnc:make-gnc-monetary comm numeric-val)))
-                    (numeric-val (gnc-budget-get-account-period-actual-value
+                                 (gnc:make-gnc-monetary comm bgt-numeric-val)))
+
+                    ;; actual amount
+                    (act-numeric-val (gnc-budget-get-account-period-actual-value
                                   budget acct period))
-                    (act-val (gnc:make-gnc-monetary comm numeric-val))
+                    (act-val (gnc:make-gnc-monetary comm act-numeric-val))
+
+                    ;; difference (budget to actual)
+                    (dif-numeric-val (gnc-numeric-sub bgt-numeric-val 
+			act-numeric-val GNC-DENOM-AUTO 
+				(bitwise-ior 48 8)))
+;; GNC-HOW-RND-NEVER = 0x08 = 8
+;; GNC_HOW_DENOM_LCD = 0x30 = 48
+	            (dif-val (if bgt-unset? "."
+                               (gnc:make-gnc-monetary comm dif-numeric-val)))
+
                     (reverse-balance? (gnc-reverse-balance acct))
                     )
 
@@ -139,6 +154,10 @@
                 html-table
                 rownum act-col act-val)
 
+               (gnc:html-table-set-cell!
+                html-table
+                rownum dif-col dif-val)
+
                (set! period (+ period 1))
                )
              )
@@ -156,8 +175,9 @@
 
       ;; make the column headers
       (while (< period num-periods)
-             (let* ((bgt-col (+ (* period 2) colnum 1))
+             (let* ((bgt-col (+ (* period 3) colnum 1))
                     (act-col (+ 1 bgt-col))
+                    (dif-col (+ 1 act-col))
                     (date (gnc-budget-get-period-start-date budget period))
                     )
                (gnc:html-table-set-cell!
@@ -171,6 +191,10 @@
                 html-table
                 1 act-col (_ "Act")) ;; Translators: Abbreviation for "Actual"
 
+               (gnc:html-table-set-cell!
+                html-table
+                1 dif-col (_ "Diff")) ;; Translators: Abbrevation for "Difference"
+
                (set! period (+ period 1))
                )
              )
