diff --git a/plugins/views_plugin_pager_full.inc b/plugins/views_plugin_pager_full.inc
index fe552c1..cc7e5f1 100644
--- a/plugins/views_plugin_pager_full.inc
+++ b/plugins/views_plugin_pager_full.inc
@@ -26,6 +26,7 @@ class views_plugin_pager_full extends views_plugin_pager {
     $options['total_pages'] = array('default' => '');
     $options['expose'] = array(
       'contains' => array(
+        'remember' => array('default' => FALSE, 'bool' => TRUE),
         'items_per_page' => array('default' => FALSE, 'bool' => TRUE),
         'items_per_page_label' => array('default' => 'Items per page', 'translatable' => TRUE),
         'items_per_page_options' => array('default' => '5, 10, 20, 40, 60'),
@@ -83,6 +84,13 @@ class views_plugin_pager_full extends views_plugin_pager {
       '#description' => t('Exposing this options allows users to define their values in a exposed form when view is displayed'),
     );
 
+    $form['expose']['remember'] = array(
+      '#type' => 'checkbox',
+      '#title' => t('Remember the last selection'),
+      '#description' => t('Enable to remember the last selection made by the user.'),
+      '#default_value' => $this->options['expose']['remember'],
+    );
+
     $form['expose']['items_per_page'] = array(
       '#type' => 'checkbox',
       '#title' => t('Expose items per page'),
@@ -197,8 +205,10 @@ class views_plugin_pager_full extends views_plugin_pager {
       }
     }
 
+    $this->get_exposed_input();
     $limit = $this->options['items_per_page'];
     $offset = $this->current_page * $this->options['items_per_page'] + $this->options['offset'];
+
     if (!empty($this->options['total_pages'])) {
       if ($this->current_page >= $this->options['total_pages']) {
         $limit = $this->options['items_per_page'];
@@ -317,6 +327,7 @@ class views_plugin_pager_full extends views_plugin_pager {
 
   function exposed_form_alter(&$form, &$form_state) {
     if ($this->items_per_page_exposed()) {
+      $this->get_exposed_input();
       $options = explode(',', $this->options['expose']['items_per_page_options']);
       $sanitized_options = array();
       if (is_array($options)) {
@@ -336,6 +347,7 @@ class views_plugin_pager_full extends views_plugin_pager {
     }
 
     if ($this->offset_exposed()) {
+      $this->get_exposed_input();
       $form['offset'] = array(
         '#type' => 'textfield',
         '#size' => 10,
@@ -353,4 +365,59 @@ class views_plugin_pager_full extends views_plugin_pager {
       }
     }
   }
+
+  function exposed_form_submit(&$form, &$form_state, &$exclude) {
+    $this->store_exposed_input($form_state);
+  }
+
+  /**
+   * Check to see if input from the exposed pager should change
+   * the behavior of this pager.
+   */
+  function get_exposed_input() {
+    if (empty($this->options['expose']['remember'])) {
+      return FALSE;
+    }
+
+    $display_id = $this->view->current_display;
+
+    if (!isset($_SESSION['views'][$this->view->name][$display_id])) {
+      $_SESSION['views'][$this->view->name][$display_id] = array();
+    }
+
+    $session = &$_SESSION['views'][$this->view->name][$display_id];
+
+    if (!empty($session['expose']['items_per_page'])) {
+      $this->options['items_per_page'] = $session['expose']['items_per_page'];
+    }
+    if (!empty($session['expose']['offset'])) {
+      $this->options['offset'] = $session['expose']['offset'];
+    }
+    return TRUE;
+  }
+
+  /**
+   * Saves input from the exposed pager to the session that will
+   * change the behavior of this pager.
+   */
+  function store_exposed_input($form_state) {
+    if (empty($this->options['expose']['remember'])) {
+      return;
+    }
+
+    $display_id = $this->view->current_display;
+
+    if (!isset($_SESSION['views'][$this->view->name][$display_id])) {
+      $_SESSION['views'][$this->view->name][$display_id] = array();
+    }
+
+    $session = &$_SESSION['views'][$this->view->name][$display_id];
+
+    if ($this->items_per_page_exposed()) {
+      $session['expose']['items_per_page'] = $form_state['values']['items_per_page'];
+    }
+    if ($this->offset_exposed()) {
+      $session['expose']['offset'] = $form_state['values']['offset'];
+    }
+  }
 }
