        * src/register/ledger-core/split-register-load.c (gnc_split_register_load):
          Get a currency for a transaction if the account is a commodity
          which has an entry in the price DB.
          
Index: src/register/ledger-core/split-register-load.c
===================================================================
--- src/register/ledger-core/split-register-load.c	(revision 13074)
+++ src/register/ledger-core/split-register-load.c	(working copy)
@@ -35,6 +35,7 @@
 #include "recncell.h"
 #include "split-register.h"
 #include "split-register-p.h"
+#include "gnc-pricedb.h"
 
 
 /* This static indicates the debugging module that this .o belongs to. */
@@ -189,6 +190,24 @@
 	if (!safe_strcmp (namespace, GNC_COMMODITY_NS_ISO) ||
 	    !safe_strcmp (namespace, GNC_COMMODITY_NS_LEGACY))
 	  currency = commodity;
+        else
+        {
+          /* Account commodity is not a currency, see if we can get a price
+           * for it and get the currency from that. */
+          GNCPriceDB *price_db = gnc_pricedb_get_db (gnc_get_current_book ());
+          GList *price_list = gnc_pricedb_lookup_latest_any_currency (price_db,
+                                                                      commodity);
+          if (price_list)
+          {
+            GNCPrice * price = (GNCPrice *) (price_list->data);
+            commodity = gnc_price_get_currency (price);
+            namespace = gnc_commodity_get_namespace (commodity);
+            if (!safe_strcmp (namespace, GNC_COMMODITY_NS_ISO) ||
+                !safe_strcmp (namespace, GNC_COMMODITY_NS_LEGACY))
+              currency = commodity;
+            gnc_price_list_destroy (price_list);
+          }
+        }
       }
     }
 
