diff --git a/uc_price_facet.module b/uc_price_facet.module
index 6fb5d58..bfeb242 100644
--- a/uc_price_facet.module
+++ b/uc_price_facet.module
@@ -98,10 +98,10 @@ class uc_price_facet extends faceted_search_facet {
   function build_root_categories_query(&$query) {
     $max_price = db_result(db_query("SELECT MAX(sell_price) FROM {uc_products}"));
     $divider = variable_get('uc_price_facet_divider', 50);
-    $query->add_table('uc_products', 'nid', 'n', 'nid');
+    $query->add_table('uc_products', 'vid', 'n', 'vid');
     for ($i = 0; $i < $max_price / $divider; $i++) {
       $min = $i * $divider;
-      $max = $min + $divider;
+      $max = $min + $divider - 1;
       $query->add_field(NULL, 'sum(case when sell_price BETWEEN '. $min .' AND '. $max .' then 1 else 0 end)', '"'. $min .','. $max .'"');
     }    
     return TRUE;
@@ -200,5 +200,6 @@ class uc_price_facet_category extends faceted_search_category {
     $query->add_table('uc_products', 'nid', 'n', 'nid');
     $query->add_field(NULL, 'sell_price', 'uc_price');
     $query->add_where("uc_products.sell_price BETWEEN %d AND %d", $prices[0], $prices[1]);
+    $query->add_where("uc_products.vid = n.vid");
   }
 }
