diff --git a/supported/user.inc b/supported/user.inc
index 4e73d3b..0198023 100644
--- a/supported/user.inc
+++ b/supported/user.inc
@@ -34,6 +34,7 @@ function user_user_import_form_fieldset($import, $collapsed) {
  */
 function user_user_import_form_update_user() {
   $form['roles'] = array('title' => t('Roles'), 'description' => t('Affected: roles assigned to user.'));
+  $form['username'] = array('title' => t('Username'), 'description' => t('Affected: username.'), 'exclude_add' => TRUE);
   $form['password'] = array('title' => t('Password'), 'description' => t('Affected: password.'), 'exclude_add' => TRUE);
   $form['contact'] = array('title' => t('Contact'), 'description' => t('Affected: user contact option.'), 'exclude_add' => TRUE);
   return $form;
diff --git a/user_import.import.inc b/user_import.import.inc
index bea6767..b60c67e 100644
--- a/user_import.import.inc
+++ b/user_import.import.inc
@@ -9,7 +9,7 @@ function user_import_errors($error = FALSE, $clear = FALSE) {
   return $errors;
 }
 
-function _user_import_create_username($order, $data, $abbreviate, $username_space) {
+function _user_import_create_username($order, $data, $abbreviate, $username_space, $update_uid = NULL) {
     
 	if (is_array($order)) {
 
@@ -24,10 +24,15 @@ function _user_import_create_username($order, $data, $abbreviate, $username_spac
 	  }
 	}
 
-	if (empty($username)) $username = _user_import_random_username();
+  if (empty($username)) {
+    if (isset($update_uid)) {
+      return;
+    }
+    $username = _user_import_random_username();
+  }
 
 	$username = _user_import_sanitise_username($username);
-	$username = _user_import_unique_username($username, TRUE);
+  $username = _user_import_unique_username($username, TRUE, $update_uid);
 	return $username;
 }
 
@@ -64,16 +69,23 @@ function _user_import_sanitise_username($username) {
 /**
  *  deal with duplicate usernames 
  */
-function _user_import_unique_username($username, $start = FALSE) {
+function _user_import_unique_username($username, $start = FALSE, $update_uid = NULL) {
 
   static $suffix = 1;
   if ($start) $suffix = 1;
   
   if ($suffix < 2) {
-    $duplicate = db_result(db_query("SELECT uid from {users} where name = '%s' LIMIT 1", $username));
+    $test_username = $username;
+  }
+  else {
+    $test_username = $username .' '. $suffix;
+  }
+
+  if (isset($update_uid)) {
+    $duplicate = db_result(db_query("SELECT uid FROM {users} WHERE name = '%s' AND uid <> %d LIMIT 1", $test_username, $update_uid));
   }
   else {
-    $duplicate = db_result(db_query("SELECT uid from {users} where name = '%s' LIMIT 1", "$username $suffix"));
+    $duplicate = db_result(db_query("SELECT uid FROM {users} WHERE name = '%s' LIMIT 1", $test_username));
   }
 
   // loop until name is valid 
@@ -234,6 +246,12 @@ function _user_import_process($settings) {
                    if ($settings['setting'] == 'import') {
 
                      if ($existing_account) {  
+                       if ($update_setting_per_module['username']) {
+                         $username = _user_import_create_username($username_order, $username_data, $username_abbreviate, $settings['username_space'], $account['uid']);
+                         if (!empty($username)) {
+                           $account['name'] = $username;
+                         }
+                       }
                        $account = user_save($existing_account, $account);
                        $updated = TRUE;
                      }
