diff -urN multistep.orig/multistep.module multistep/multistep.module
--- multistep.orig/multistep.module	2010-05-30 01:57:59.000000000 -0400
+++ multistep/multistep.module	2010-06-03 10:24:48.000000000 -0400
@@ -170,7 +170,7 @@
                 is_null($status) || $status == '' ? '' : 'multistep-' . $status,
                 $current_step == $step ? 'active': '',
               ),
-              'url' => ((!$new && $workflow_mode == 'free' || ($workflow_mode == 'direct' && $status == 'submitted')) ? 'node/' . arg(1) . '/edit/' . $step : NULL),
+              'url' => ((!$new && $workflow_mode == 'free' || ($workflow_mode == 'direct' && ($status == 'submitted' || $last_submitted_step+1 == $step))) ? 'node/' . arg(1) . '/edit/' . $step : NULL),
               'label' => (($show_step_numbers) ? $step . '. ' : '') . $group['label'],
               'next_unsubmitted_step' => FALSE,
             );
