Only in multistep: example.patch
diff -urp multistep-origin/multistep.module multistep/multistep.module
--- multistep-origin/multistep.module 2009-12-14 21:31:49.000000000 +0100
+++ multistep/multistep.module  2010-03-03 15:45:23.000000000 +0100
@@ -370,7 +370,6 @@ function multistep_form_alter(&$form, &$
   $type = $form['#node']->type;
   // Do nothing if multistep is not enabled for this node type.
   if (variable_get('multistep_expose_' . $type, 'disabled') != 'enabled'
-  || substr_count($form_id, 'node_form') <= 0
   || arg(0) == 'admin') {
     return;
   }   
@@ -525,7 +524,8 @@ function multistep_validate($form, &$for
 function multistep_submit($form, &$form_state, $action) {
   // Submit the actual values.
   node_form_submit($form, $form_state);
-  $type = $form_state['values']['type'];
+  $content_type_part = reset($form_state['content_profile_registration']);
+  $type=$content_type_part['node']->type;
   $step = _multistep_get_current_step($type);
   $nid = $form_state['nid'];
   // Update the multistep table.
@@ -547,11 +547,14 @@ function multistep_submit($form, &$form_
       break;
   }   
   // If there are steps left, go to the next (or previous) one.
+  variable_get('multistep_steps_' .$type, 0);
   if ($goto_step <= variable_get('multistep_steps_' .$type, 0)) {
     // Handle redirects for content_profile
     if (module_exists('content_profile') && is_content_profile($type)) {
       global $user;
       $form_state['redirect'] = 'user/' . $user->uid . '/profile/' . $type . '/' . $goto_step;
+      dsm($form_state[redirect]);
+      exit();
     }   
     else {
       $form_state['redirect'] = array('node/' . $nid . '/edit/' . $goto_step, (isset($_REQUEST['redirect']) ? array('redirect' => $_REQUEST['redirect']) : array()));

