diff --git a/Solr_Base_Query.php b/Solr_Base_Query.php
index 95373d6..9826b15 100644
--- a/Solr_Base_Query.php
+++ b/Solr_Base_Query.php
@@ -444,7 +444,7 @@ class SolrBaseQuery extends SolrFilterSubQuery implements DrupalSolrQueryInterfa
       if (is_array($value)) {
         $value = end($value);
       }
-      $this->params[$name] = trim($value);
+      $this->params[$name] = $this->normalizeParamValue($value);
       return $this;
     }
     // We never actually populate $this->params['fq'].  Instead
@@ -463,15 +463,28 @@ class SolrBaseQuery extends SolrFilterSubQuery implements DrupalSolrQueryInterfa
       $this->params[$name] = array();
     }
 
-    if (is_array($value)) {
-      $this->params[$name] = array_merge($this->params[$name], array_values($value));
+    if (!is_array($value)) {
+      // Convert to array for array_map.
+      $param_values = array($value);
     }
     else {
-      $this->params[$name][] = $value;
+      // Convert to a numerically keyed array.
+      $param_values = array_values($value);
     }
+    $this->params[$name] = array_merge($this->params[$name], array_map(array($this, 'normalizeParamValue'), $param_values));
+
     return $this;
   }
 
+  protected function normalizeParamValue($value) {
+    // Convert boolean to string.
+    if (is_bool($value)) {
+      return $value ? 'true' : 'false';
+    }
+    // Convert to trimmed string.
+    return trim($value);
+  }
+
   public function addParams(Array $params) {
     foreach ($params as $name => $value) {
       $this->addParam($name, $value);
diff --git a/tests/solr_base_query.test b/tests/solr_base_query.test
index b3a5600..4cf550d 100644
--- a/tests/solr_base_query.test
+++ b/tests/solr_base_query.test
@@ -199,6 +199,12 @@ class SolrBaseQueryTests extends DrupalUnitTestCase {
       $message = t('Filter (@fq) is not Valid', array('@fq' => $filter));
       $this->assertFalse($query->validFilterValue($filter), $message);
     }
-
+    // Check parameter normalization.
+    $query->addParam('spellcheck', TRUE);
+    $this->assertTrue($query->getParam('spellcheck') === 'true', "TRUE normalized to string 'true'");
+    $query->replaceParam('spellcheck', FALSE);
+    $this->assertTrue($query->getParam('spellcheck') === 'false', "FALSE normalized to string 'false'");
+    $query->addParam('fl', array(' x ', TRUE));
+    $this->assertTrue($query->getParam('fl') === array('x', 'true'), "Array of params all normalized");
   }
 }
