--- ./nodequeue.module	2009-11-04 21:04:43.000000000 -0500
+++ ./nodequeue_597498.module	2009-12-16 13:52:39.000000000 -0500
@@ -1248,6 +1248,18 @@ function nodequeue_save_subqueue_order($
     return array(NODEQUEUE_DUPLICATE_POSITION, 'Duplicate position values are not allowed. New subqueue order not saved.');
   }
 
+  // This fixes http://drupal.org/node/597498.  
+  if ($queue->reverse == 1) {
+    $reverse_nodes = array();
+    $p = array_keys($nodes);
+    $v = array_values($nodes);
+    $v = array_reverse($v);
+    foreach ($v as $key => $value) {
+      $reverse_nodes[$p[$key]] = $value;
+    }
+    $nodes = $reverse_nodes;
+  }
+
   // clear the queue and save the new positions
   db_query('DELETE FROM {nodequeue_nodes} WHERE sqid = %d', $sqid);
   foreach ($nodes as $pos => $nid) {
