--- nodequeue.module	2010-03-16 17:10:45.000000000 -0500
+++ nodequeue.module	2010-05-01 09:50:22.000000000 -0500
@@ -1256,6 +1256,23 @@ 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.  
+  $current_nodes = _nodequeue_dragdrop_get_nodes($queue, $subqueue);
+  $old_positions = array();
+  foreach($current_nodes as $node) {
+  $old_positions[$node->position] = $node->nid;
+  }
+  if ($queue->reverse == 1 && $nodes != $old_positions) {
+    $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) {
