--- email_registration/email_registration.module
+++ email_registration/email_registration.module
@@ -67,6 +67,30 @@ function email_registration_user_insert(
  *
  */
 function email_registration_unique_username($name, $uid = 0) {
+  // function to clean up username
+  $name = email_registration_cleanup_username($name);
+
+  // Iterate until we find a unique name.
+  $i = 0;
+  do {
+    $new_name = empty($i) ? $name : $name . '_' . $i;
+    $found = db_query_range("SELECT uid from {users} WHERE uid <> :uid AND name = :name", 0, 1, array(':uid' => $uid, ':name' => $new_name))->fetchAssoc();
+    $i++;
+  } while (!empty($found));
+
+  return $new_name;
+}
+
+/**
+ * Function to clean up username
+ * e.g. 
+ *     Replace two or more spaces with a single underscore
+ *     Strip illegal characters.
+ * 
+ * @param username to be cleaned up
+ * @return cleaned up username
+ */
+function email_registration_cleanup_username($name) {
   // Strip illegal characters.
   $name = preg_replace('/[^\x{80}-\x{F7} a-zA-Z0-9@_.\'-]/', '', $name);
 
@@ -74,26 +98,16 @@ function email_registration_unique_usern
   $name = trim($name);
 
   // Convert any other series of spaces to a single underscore.
-  $name = preg_replace('/ +/', '_', $name);
-
+  $name = preg_replace('/  +/', '_', $name);
+  
   // If there's nothing left use a default.
   $name = ('' === $name) ? t('user') : $name;
 
   // Truncate to reasonable size.
   $name = (drupal_strlen($name) > (USERNAME_MAX_LENGTH - 10)) ? drupal_substr($name, 0, USERNAME_MAX_LENGTH - 11) : $name;
-
-  // Iterate until we find a unique name.
-  $i = 0;
-  do {
-    $new_name = empty($i) ? $name : $name . '_' . $i;
-    $found = db_query_range("SELECT uid from {users} WHERE uid <> :uid AND name = :name", 0, 1, array(':uid' => $uid, ':name' => $new_name))->fetchAssoc();
-    $i++;
-  } while (!empty($found));
-
-  return $new_name;
+  return $name;
 }
 
-
 /**
  * Implements hook_form_FORM_ID_alter().
  */
