Index: volunteer.module
===================================================================
--- volunteer.module	(revision 1588)
+++ volunteer.module	(working copy)
@@ -429,28 +429,29 @@
 
   db_set_active('civicrm');
   $title = crm_uf_get_profile_title(variable_get('volunteer_form', ''));
+  $reset = true;
   db_set_active();
 
   if ( $user->uid ) {
     db_set_active('civicrm');
     $userID = crm_uf_get_match_id( $user->uid );
-    $register = TRUE;
+    $register = $userID ? false : true;
     if (!$userID && count($edit)) {
       civicrm_register_data($edit, $user, $title, FALSE);
       $userID = crm_uf_get_match_id( $user->uid );
       $register = FALSE;
     }
-    $form = crm_uf_get_profile_html( $userID, $title, null, FALSE, $register );
+    $form = crm_uf_get_profile_html( $userID, $title, null, $register, $reset );
     db_set_active();
-    $form .= form_submit(t('Volunteer'));
-    $url = url("node/$nid");
   }
   else {
     db_set_active('civicrm');
-    $_POST['postURL'] = url("volunteer/volunteer/$nid");
-    $form = crm_uf_get_create_html(TRUE);
+    $register = true; //always for anonymous user
+    //As per Lobo: right call is
+    $form = crm_uf_get_profile_html( null, $title, null, $register, $reset ); 
     db_set_active();
   }
+  $form .= form_submit(t('Volunteer'));
   $url = url("volunteer/volunteer/$nid");
 
   return form($form, 'post', $url);
