diff --git a/includes/service.inc b/includes/service.inc
index f48e6ce..195df41 100644
--- a/includes/service.inc
+++ b/includes/service.inc
@@ -651,7 +651,7 @@ class FuzzySearchService extends SearchApiAbstractService {
         $db_query->addField('t', 'item_id', 'item_id');
         $db_query->addExpression(':score', 'score', array(':score' => 1));
       }
-      $condition = $this->createFilterCondition($filter, $fields, $db_query);
+      $condition = $this->createFilterCondition($filter, $fields, $db_query, $fuzzy);
       if ($condition) {
         $db_query->condition($condition);
       }
@@ -967,7 +967,8 @@ class FuzzySearchService extends SearchApiAbstractService {
         // Group by word and then entity
         $query->groupBy('t.word_id');
         $query->groupBY('t.item_id');
-        $query->addExpression('SUM(t.completeness)', 'percent');
+        if(!$neg)
+          $query->addExpression('SUM(t.completeness)', 'percent');
         $query->having('SUM(t.completeness) >= :value1', array(':value1' => $fuzzy['min_completeness']));
       }
     }
@@ -975,7 +976,7 @@ class FuzzySearchService extends SearchApiAbstractService {
     if ($nested) {
       $word = '';
       foreach ($nested as $k) {
-        $query = $this->createKeysQuery($k, $fields, $all_fields);
+        $query = $this->createKeysQuery($k, $fields, $all_fields, $fuzzy);
         if (!$neg) {
           $word .= ' ';
           $var = ':word' . strlen($word);
@@ -1047,13 +1048,13 @@ class FuzzySearchService extends SearchApiAbstractService {
 
       if ($conj == 'AND') {
         foreach ($negated as $k) {
-          $db_query->condition('t.item_id', $this->createKeysQuery($k, $fields, $all_fields), 'NOT IN');
+          $db_query->condition('t.item_id', $this->createKeysQuery($k, $fields, $all_fields, $fuzzy), 'NOT IN');
         }
       }
       else {
         $or = db_or();
         foreach ($negated as $k) {
-          $or->condition('t.item_id', $this->createKeysQuery($k, $fields, $all_fields), 'NOT IN');
+          $or->condition('t.item_id', $this->createKeysQuery($k, $fields, $all_fields, $fuzzy), 'NOT IN');
         }
         if (isset($old_query)) {
           $or->condition('t.item_id', $old_query, 'NOT IN');
@@ -1089,12 +1090,12 @@ class FuzzySearchService extends SearchApiAbstractService {
    *
    * @return QueryConditionInterface
    */
-  protected function createFilterCondition(SearchApiQueryFilterInterface $filter, array $fields, SelectQueryInterface $db_query) {
+  protected function createFilterCondition(SearchApiQueryFilterInterface $filter, array $fields, SelectQueryInterface $db_query, array $fuzzy) {
     $cond = db_condition($filter->getConjunction());
     $empty = TRUE;
     foreach ($filter->getFilters() as $f) {
       if (is_object($f)) {
-        $c = $this->createFilterCondition($f, $fields, $db_query);
+        $c = $this->createFilterCondition($f, $fields, $db_query, $fuzzy);
         if ($c) {
           $empty = FALSE;
           $cond->condition($c);
@@ -1115,7 +1116,7 @@ class FuzzySearchService extends SearchApiAbstractService {
           // #negation is set here purely because we don't want any score.
           $keys = array('#conjunction' => 'AND', '#negation' => TRUE, $f[1]);
           $keys = $this->prepareKeys($keys);
-          $query = $this->createKeysQuery($keys, array($fields[$f[0]]), $fields);
+          $query = $this->createKeysQuery($keys, array($fields[$f[0]]), $fields, $fuzzy);
           $cond->condition('t.item_id', $query, $f[2] == '<>' || $f[2] == '!=' ? 'NOT IN' : 'IN');
         }
         else {
