diff --git a/Solr_Base_Query.php b/Solr_Base_Query.php
index 0429e07..fb6982f 100644
--- a/Solr_Base_Query.php
+++ b/Solr_Base_Query.php
@@ -273,10 +273,14 @@ class SolrBaseQuery extends SolrFilterSubQuery implements DrupalSolrQueryInterfa
    * environment id
    */
   protected $name;
+
   // Makes sure we always have a valid sort.
   protected $solrsort = array('#name' => 'score', '#direction' => 'desc');
   // A flag to allow the search to be aborted.
   public $abort_search = FALSE;
+  
+  // A flag to check if need to retrieve another page of the result set
+  public $page = 0;
 
   /**
    * @param $env_id
diff --git a/apachesolr.module b/apachesolr.module
index 9d76d18..f75aa29 100644
--- a/apachesolr.module
+++ b/apachesolr.module
@@ -1283,7 +1283,7 @@ function apachesolr_server_status($url, $class = NULL) {
  *
  * @throws Exception
  */
-function apachesolr_do_query(DrupalSolrQueryInterface $current_query, $page = 0) {
+function apachesolr_do_query(DrupalSolrQueryInterface $current_query) {
   if (!is_object($current_query)) {
     throw new Exception(t('NULL query object in function apachesolr_do_query()'));
   }
@@ -1325,7 +1325,7 @@ function apachesolr_do_query(DrupalSolrQueryInterface $current_query, $page = 0)
     // A module implementing HOOK_apachesolr_query_alter() aborted the search.
     return array(NULL, array());
   }
-  $query->addParam('start', $page * $query->getParam('rows'));
+  $query->addParam('start', $query->page * $query->getParam('rows'));
 
   $keys = $query->getParam('q');
 
diff --git a/apachesolr_search.module b/apachesolr_search.module
index 2bf56e1..79fd406 100644
--- a/apachesolr_search.module
+++ b/apachesolr_search.module
@@ -931,7 +931,7 @@ function apachesolr_search_run_empty($name, array $params = array(), $base_path
   $query = apachesolr_drupal_query($name, $params, '', $base_path, $solr);
   $query->addParam('rows', '0');
   $solr_id = $query->solr('getId');
-  list($final_query, $response) = apachesolr_do_query($query, 0);
+  list($final_query, $response) = apachesolr_do_query($query);
   apachesolr_has_searched($solr_id, TRUE);
 }
 
@@ -961,9 +961,13 @@ function apachesolr_search_run($name, array $params = array(), $solrsort = '', $
   if ($query->getParam('q')) {
     apachesolr_search_add_spellcheck_params($query);
   }
+  
   // Add custom params after we add the default params
   $query->addParams($params);
 
+  // Add the paging parameters
+  $query->page = $page;
+
   apachesolr_search_add_boost_params($query);
   if ($query->getParam('q')) {
     apachesolr_search_highlighting_params($query);
@@ -985,6 +989,7 @@ function apachesolr_search_run($name, array $params = array(), $solrsort = '', $
     // No highlighting, use the teaser as a snippet.
     $query->addParam('fl', 'teaser');
   }
+
   list($final_query, $response) = apachesolr_do_query($query, $page);
   $solr_id = $query->solr('getId');
   apachesolr_has_searched($solr_id, TRUE);
