Index: supported/user.inc
===================================================================
--- supported/user.inc	(revision 753)
+++ supported/user.inc	(working copy)
@@ -35,6 +35,7 @@
  */
 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;
Index: user_import.module
===================================================================
--- user_import.module	(revision 753)
+++ user_import.module	(working copy)
@@ -1063,7 +1063,7 @@
   return;
 }
  
-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)) {
     
@@ -1079,10 +1079,15 @@
       }
     }
     
-    if (empty($username)) $username = _user_import_random_username();
+    if (empty($username)) {
+      if (isset($update_uid)) {
+        return NULL;
+      }
+      $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;
 }
 
@@ -1119,18 +1124,25 @@
 /**
  *  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 {
-    $duplicate = db_result(db_query("SELECT uid from {users} where name = '%s' LIMIT 1", "$username $suffix"));
+    $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", $test_username));
+  }
+
   // loop until name is valid 
   if (!empty($duplicate)) {
     $suffix++;
@@ -1422,6 +1434,12 @@
                    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;
                      }
