--- views/plugins/views_plugin_display.inc	
+++ views/plugins/views_plugin_display.inc	
@@ -558,6 +558,9 @@ class views_plugin_display extends views
         'default' => FALSE,
         'bool' => TRUE,
       ),
+      'pager_position' => array(
+        'default' => 'bottom',
+      ),
       'use_more_always' => array(
         'default' => FALSE,
         'bool' => TRUE,
@@ -729,6 +732,21 @@ class views_plugin_display extends views
    */
   function has_path() { return FALSE; }
 
+
+  function pager_positions($position = NULL) {
+    $positions = array(
+      'top' => t('Top'),
+      'bottom' => t('Bottom'),
+      'both' => t('Both'),
+    );
+
+    if ($position) {
+      return $positions[$position];
+    }
+
+    return $positions;
+  }
+
   /**
    * Check to see if the display has some need to link to another display.
    *
@@ -1249,6 +1267,12 @@ class views_plugin_display extends views
       'desc' => t("Change this display's pager setting."),
     );
 
+    $options['pager_position'] = array(
+      'category' => 'pager',
+      'title' => t('Pager position'),
+      'value' => $this->pager_positions($this->get_option('pager_position')),
+    );
+
     // If pagers aren't allowed, change the text of the item:
     if (empty($this->definition['use pager'])) {
       $options['pager']['title'] = t('Items to display');
@@ -2150,6 +2174,15 @@ class views_plugin_display extends views
         }
 
         break;
+      case 'pager_position':
+        $form['#title'] .= t('Pager position');
+        $form['pager_position'] = array(
+          '#type' => 'radios',
+          '#description' => t('Show pager before or after the parent display?'),
+          '#options' => $this->pager_positions(),
+          '#default_value' => $this->get_option('pager_position'),
+        );
+        break;
       case 'pager_options':
         $plugin = $this->get_plugin('pager');
         $form['#title'] .= t('Pager options');
@@ -2463,6 +2496,9 @@ class views_plugin_display extends views
           $this->set_option('pager', $pager);
         }
         break;
+      case 'pager_position':
+        $this->set_option($form_state['section'], $form_state['values'][$form_state['section']]);
+        break;
     }
 
     foreach ($this->extender as $extender) {
--- views/theme/theme.inc	
+++ views/theme/theme.inc	
@@ -87,7 +87,18 @@ function template_preprocess_views_view(
 
   if ($view->display_handler->render_pager()) {
     $exposed_input = isset($view->exposed_raw_input) ? $view->exposed_raw_input : NULL;
-    $vars['pager']      = $view->query->render_pager($exposed_input);
+    switch($view->display_handler->get_option('pager_position')) {
+      case 'top':
+        $vars['pager_top'] = $view->query->render_pager($exposed_input);
+        break;
+    case 'bottom':
+        $vars['pager_bottom'] = $view->query->render_pager($exposed_input);
+        break;
+    case 'both':
+        $vars['pager_top'] = $view->query->render_pager($exposed_input);
+        $vars['pager_bottom'] = $view->query->render_pager($exposed_input);
+        break;
+    }
   }
 
   $vars['attachment_before'] = !empty($view->attachment_before) ? $view->attachment_before : '';
--- views/theme/views-view.tpl.php	
+++ views/theme/views-view.tpl.php	
@@ -51,6 +51,10 @@
     </div>
   <?php endif; ?>
 
+  <?php if ($pager_top): ?>
+    <?php print $pager_top; ?>
+  <?php endif; ?>
+
   <?php if ($rows): ?>
     <div class="view-content">
       <?php print $rows; ?>
@@ -61,8 +65,8 @@
     </div>
   <?php endif; ?>
 
-  <?php if ($pager): ?>
-    <?php print $pager; ?>
+  <?php if ($pager_bottom): ?>
+    <?php print $pager_bottom; ?>
   <?php endif; ?>
 
   <?php if ($attachment_after): ?>
