diff -urpx Entries -x '.#*' -x '*~' ubercart-6.x-2.0-rc6-patched/ubercart-DRUPAL-6--2/uc_cart/uc_cart.pages.inc htdocs/sites/all/modules/ubercart/uc_cart/uc_cart.pages.inc
--- ubercart-6.x-2.0-rc6-patched/ubercart-DRUPAL-6--2/uc_cart/uc_cart.pages.inc	2009-09-02 11:56:58.596967944 +0100
+++ htdocs/sites/all/modules/ubercart/uc_cart/uc_cart.pages.inc	2009-09-02 13:15:19.676968188 +0100
@@ -304,7 +304,10 @@ function uc_cart_checkout_form_validate(
     // Get the altered price per unit, as ordered products have a locked-in
     // price. Price altering rules may change over time, but the amount paid
     // by the customer does not after the fact.
-    $order->products[$key]->price = uc_price($price_info, $context) / $item->qty;
+    $price = uc_price($price_info, $context) / $item->qty;
+    if ($order->products[$key]->price != $price) {
+      $order->products[$key]->data['altered_price'] = $price;
+    }
   }
 
   $order->order_total = uc_order_get_total($order, TRUE);
diff -urpx Entries -x '.#*' -x '*~' ubercart-6.x-2.0-rc6-patched/ubercart-DRUPAL-6--2/uc_order/uc_order.module htdocs/sites/all/modules/ubercart/uc_order/uc_order.module
--- ubercart-6.x-2.0-rc6-patched/ubercart-DRUPAL-6--2/uc_order/uc_order.module	2009-09-02 11:56:58.596967944 +0100
+++ htdocs/sites/all/modules/ubercart/uc_order/uc_order.module	2009-09-02 13:14:14.248967474 +0100
@@ -1422,7 +1422,8 @@ function uc_order_get_total($order, $pro
 
   if (is_array($order->products)) {
     foreach ($order->products as $product) {
-      $total += $product->price * $product->qty;
+      $price = isset($product->data['altered_price']) ? $product->data['altered_price'] : $product->price;
+      $total += $price * $product->qty;
     }
   }
 
