diff --git a/Solr_Base_Query.php b/Solr_Base_Query.php
index c0e2613..3a2d76f 100644
--- a/Solr_Base_Query.php
+++ b/Solr_Base_Query.php
@@ -113,17 +113,23 @@ class SolrFilterSubQuery {
   }
 
   public function makeFilterQuery(array $filter) {
-    $prefix = empty($filter['#exclude']) ? '' : '-';
+    $prefix = '';
     if ($filter['#local']) {
-      $prefix = '{!' . $filter['#local'] . '}' . $prefix;
+      $prefix .= '{!' . $filter['#local'] . '}';
+    }
+    if (!empty($filter['#exclude'])) {
+      $prefix .= '-';
     }
     // If the field value contains a colon or a space, wrap it in double quotes,
     // unless it is a range query or is already wrapped in double quotes or
     // parentheses.
-    if (preg_match('/[ :]/', $filter['#value']) && !preg_match('/^[\[\{]\S+ TO \S+[\]\}]$/', $filter['#value']) && !preg_match('/^["\(].*["\)]$/', $filter['#value'])) {
+    if (preg_match('/[ :]/', $filter['#value']) && !preg_match('/[\[\{]\S+ TO \S+[\]\}]/', $filter['#value']) && !preg_match('/^["\(].*["\)]$/', $filter['#value'])) {
       $filter['#value'] = '"' . $filter['#value'] . '"';
     }
-    return $prefix . $filter['#name'] . ':' . $filter['#value'];
+    if (!empty($filter['#name'])) {
+      $prefix .= $filter['#name'] . ':';
+    }
+    return $prefix . $filter['#value'];
   }
 
   /**
