diff --git a/currency/includes/CurrencyConverter.inc b/currency/includes/CurrencyConverter.inc
index 4db6694..13f69ab 100644
--- a/currency/includes/CurrencyConverter.inc
+++ b/currency/includes/CurrencyConverter.inc
@@ -84,8 +84,11 @@ class CurrencyConverter implements CurrencyConverterInterface {
     foreach (self::loadConverters() as $converter) {
       foreach ($converter::loadMultiple($currency_codes) as $currency_code_from => $currency_codes_to) {
         foreach ($currency_codes_to as $currency_code_to => $rate) {
-          if ($rate !== FALSE) {
-            $rates[$currency_code_from][$currency_code_to] = $rate;
+          $rates[$currency_code_from][$currency_code_to] = $rate;
+          // If we found a rate, prevent it from being looked up by the next converter.
+          if ($rate) {
+            $index = array_search($currency_code_to, $currency_codes[$currency_code_from]);
+            unset($currency_codes[$currency_code_from][$index]);
           }
         }
       }
diff --git a/currency_conversion_rate_db_table/currency_conversion_rate_db_table.module b/currency_conversion_rate_db_table/currency_conversion_rate_db_table.module
index 95823d5..7571534 100644
--- a/currency_conversion_rate_db_table/currency_conversion_rate_db_table.module
+++ b/currency_conversion_rate_db_table/currency_conversion_rate_db_table.module
@@ -69,6 +69,7 @@ function currency_conversion_rate_db_table_refresh() {
   $rates = CurrencyConverter::loadMultiple($currency_codes);
   $delete_query = db_delete('currency_conversion_rate_db_table');
   foreach ($rates as $currency_code_from => $currency_code_from_rates) {
+    $currency_code_from_rates = array_filter($currency_code_from_rates);
     foreach ($currency_code_from_rates as $currency_code_to => $rate) {
       db_merge('currency_conversion_rate_db_table')
         ->key(array(
