diff --git a/modules/book/book.module b/modules/book/book.module
index cd402393d183604481a510d5999844da314f6ca1..f93d301787808a7bb6f489fc39acee27ade8f44d 100644
--- a/modules/book/book.module
+++ b/modules/book/book.module
@@ -220,7 +220,6 @@ function book_submit(&$node) {
   global $user;
   // Set default values for non-administrators.
   if (!user_access('administer nodes')) {
-    $node->weight = 0;
     $node->revision = 1;
     $book->uid = $user->uid;
     $book->name = $user->uid ? $user->name : '';
@@ -276,9 +275,12 @@ function book_form(&$node) {
     );
   }
   else {
-    // If a regular user updates a book page, we create a new revision
-    // authored by that user:
-    $form['revision'] = array('#type' => 'hidden', '#value' => 1);
+    // If a regular user updates a book page, we preserve the node weight; otherwise
+    // we use 0 as the default for new pages
+    $form['weight'] = array(
+      '#type' => 'value',
+      '#value' => isset($node->weight) ? $node->weight : 0,
+    );
   }
 
   return $form;