diff --git a/currency_commerce.module b/currency_commerce.module
index 43f6250..94f882e 100644
--- a/currency_commerce.module
+++ b/currency_commerce.module
@@ -15,9 +15,16 @@ function currency_commerce_commerce_currency_info_alter(&$commerce_currencies, $
   // Expose Currency's currencies to Drupal Commerce.
   foreach ($currencies as $currency) {
     if (!isset($commerce_currencies[$currency->ISO4217Code])) {
+      $decimals = 0;
+      if ($currency->subunits > 0) {
+        $decimals = 1;
+        while ($currency->subunits > pow(10, $decimals)) {
+          $decimals++;
+        }
+      }
       $commerce_currencies[$currency->ISO4217Code] = array(
         'code' => $currency->ISO4217Code,
-        'decimals' => $currency->minorUnit,
+        'decimals' => $decimals,
         'numeric_code' => $currency->ISO4217Number,
         'symbol' => $currency->sign,
         'name' => $currency->title,
diff --git a/tests/CurrencyCommerceWebTestCase.test b/tests/CurrencyCommerceWebTestCase.test
index 9b3ad20..5b014a5 100644
--- a/tests/CurrencyCommerceWebTestCase.test
+++ b/tests/CurrencyCommerceWebTestCase.test
@@ -43,7 +43,7 @@ class CurrencyCommerceWebTestCase extends DrupalWebTestCase {
     // Test using the Hindi locale, because it uses grouping sizes that are
     // supported by Currency, but not by Drupal Commerce.
     $language->language = 'hi';
-    $language->currency_country_code = 'IN';
+    CurrencyLocalePattern::setCountryCode('IN');
     $this->assertEqual(commerce_currency_format(12345678, 'EUR'), '€ 1,23,456.78');
   }
 
