diff -urp realname.orig/realname.admin.inc realname/realname.admin.inc
--- realname.orig/realname.admin.inc	2009-05-18 14:42:12.000000000 -0400
+++ realname/realname.admin.inc	2009-05-18 14:46:34.000000000 -0400
@@ -358,6 +358,14 @@ function realname_admin_fields() {
     '#default_value' => variable_get('realname_pattern', '%1'),
     );
 
+  $form['realname_alt_pattern'] = array(
+    '#type' => 'textfield',
+    '#field_prefix' => '<strong>'. t('Alternative Name Pattern') .'</strong> ',
+    '#description' => t('The determines how the fields will be used to create the alternative "Real name." Use "%1" to refer to the first field, "%2" to refer to the second, etc..'),
+    '#size' => 30,
+    '#default_value' => variable_get('realname_alt_pattern', '%1'),
+    );
+
   // If there were any URL fields, give a home page option.
   if ($links) {
     $links[''] = t('');
@@ -417,6 +425,7 @@ function realname_admin_fields_submit($f
   // Okay, save the stuff.
   variable_set('realname_fields', $realname_fields);
   variable_set('realname_pattern', $form_state['values']['realname_pattern']);
+  variable_set('realname_alt_pattern', $form_state['values']['realname_alt_pattern']);
   variable_set('realname_homepage', $form_state['values']['realname_homepage']);
   variable_set('realname_nofollow', $form_state['values']['realname_nofollow']);
 
Only in realname.orig: realname.admin.inc.orig
diff -urp realname.orig/realname.install realname/realname.install
--- realname.orig/realname.install	2009-05-18 14:42:12.000000000 -0400
+++ realname/realname.install	2009-05-18 14:48:25.000000000 -0400
@@ -33,10 +33,17 @@ function realname_schema() {
         'length' => '255',
         'not null' => TRUE,
         ),
+      'realname_alt' => array(
+        'description' => 'Saved computed alternative RealName.',
+        'type' => 'varchar',
+        'length' => '255',
+        'not null' => TRUE,
+        ),
       ),
     'primary key' => array('uid'),
     'indexes' => array(
-      'realname' => array('realname')
+      'realname' => array('realname'),
+      'realname_alt' => array('realname_alt'),
       ),
     );
   return $schema;
@@ -68,6 +75,7 @@ function realname_uninstall() {
   variable_del('realname_nofollow');
   variable_del('realname_notver');
   variable_del('realname_pattern');
+  variable_del('realname_alt_pattern');
   variable_del('realname_profile_module');
   variable_del('realname_profile_type');
   variable_del('realname_search_enable');
diff -urp realname.orig/realname.module realname/realname.module
--- realname.orig/realname.module	2009-05-18 14:42:12.000000000 -0400
+++ realname/realname.module	2009-05-19 09:23:41.000000000 -0400
@@ -329,6 +329,7 @@ function realname_user($op, &$edit, &$ac
   switch ($op) {
     case 'load':
       $account->realname = realname_make_name($account);
+      $account->realname_alt = realname_make_name($account, TRUE);
 
       // If theme then replace name with realname.
       if (variable_get('realname_theme', TRUE) && $account->realname) {
@@ -346,6 +347,7 @@ function realname_user($op, &$edit, &$ac
     case 'insert':
     case 'after_update':
       $account->realname = _realname_make_name($account);
+      $account->realname_alt = _realname_make_name($account, TRUE);
       // Try to update, if fail - try to insert.
       db_query("DELETE FROM {realname} WHERE uid=%d", $account->uid);
       drupal_write_record('realname', $account);
@@ -373,6 +375,7 @@ function realname_nodeapi(&$node, $op, $
       case 'delete':
         $realname->uid = $account->uid;
         $realname->realname = _realname_make_name($account);
+        $realname->realname_alt = _realname_make_name($account, TRUE);
         // try to update, if fail - try to insert
         if (!drupal_write_record('realname', $realname,  'uid')) {
           drupal_write_record('realname', $realname);
@@ -634,7 +637,7 @@ function realname_make_name(&$account, $
   }
 
   // Check static cache first.
-  if (isset($users[$account->uid])) {
+  if (!$alternative && isset($users[$account->uid])) {
     $account->homepage = isset($links[$account->uid]) ? $links[$account->uid] : NULL;
     return $users[$account->uid];
   }
@@ -647,9 +650,13 @@ function realname_make_name(&$account, $
     return $result;
   }
 
-  $result = _realname_make_name($account);
-  $result_alt = _realname_make_name($account, TRUE);
-  db_query("INSERT INTO {realname} (uid, realname, realname_alt) VALUES(%d, '%s', '%s')", $account->uid, $result, $result_alt);
+  $realname->uid = $account->uid;
+  $realname->realname = _realname_make_name($account);
+  $realname->realname_alt = _realname_make_name($account, TRUE);
+  // Try to update, if fail - try to insert.
+  if (!drupal_write_record('realname', $realname,  'uid')) {
+    drupal_write_record('realname', $realname);
+  }
   return !$alternative ? $result : $result_alt;
 }
 
@@ -662,13 +669,15 @@ function realname_make_name(&$account, $
  * @return
  *   The constructed "real name" string.
  */
-function _realname_make_name(&$account) {
-  static $fields, $pattern_saved, $homepage, $use_theme, $type, $module, $profile_privacy;
-  static $users = array();
+function _realname_make_name(&$account, $alternative = FALSE) {
+  $pattern_saved = '';
+  static $fields, $homepage, $use_theme, $type, $module, $profile_privacy;
+  static $users = array(), $users_alt = array();
   static $links = array();
   static $edit = array();
 
   // Get our controlling variables (static makes it once per page load).
+  $pattern_saved = !$alternative ? variable_get('realname_pattern', ' ') : variable_get('realname_alt_pattern', ' ');
   if (!isset($fields)) {
     $fields = variable_get('realname_fields', array());
     // Are there any fields assigned yet?
@@ -676,7 +685,6 @@ function _realname_make_name(&$account)
       // No, so just return the name.
       return $account->name;
     }
-    $pattern_saved = variable_get('realname_pattern', ' ');
     $homepage = variable_get('realname_homepage', NULL);
     $use_theme = variable_get('realname_theme', TRUE);
     $module = variable_get('realname_profile_module', NULL);
@@ -823,6 +831,7 @@ function _realname_rebuild_realnames(&$c
   while ($row = db_fetch_object($result)) {
     $realname->uid = $row->uid;
     $realname->realname = _realname_make_name($row);
+    $realname->realname_alt = _realname_make_name($row, TRUE);
     // Try to update, if fail - try to insert.
     if (!drupal_write_record('realname', $realname,  'uid')) {
       drupal_write_record('realname', $realname);
diff -urp realname.orig/token_realname.inc realname/token_realname.inc
--- realname.orig/token_realname.inc	2009-05-18 14:42:12.000000000 -0400
+++ realname/token_realname.inc	2009-05-18 15:37:10.000000000 -0400
@@ -14,7 +14,7 @@ function realname_token_list($type = 'al
     case 'global':
     case 'comment':
       $tokens[$type]['realname'] = t('The RealName for the user.');
-      $tokens[$type]['realname'] = t('The alternative RealName for the user.');
+      $tokens[$type]['realname-alt'] = t('The alternative RealName for the user.');
       $tokens[$type]['realname-link'] = t('Themed username link.');
       $tokens[$type]['homepage'] = t('The home page for the user.');
       return $tokens;
@@ -37,7 +37,7 @@ function realname_token_values($type, $o
         return;
       }
       $tokens['realname'] = realname_make_name($object);
-      $tokens['realname-alt'] = realname_make_name($object);
+      $tokens['realname-alt'] = realname_make_name($object, TRUE);
       $tokens['realname-link'] = theme('username', $object);
       $tokens['homepage'] = isset($object->homepage) ? $object->homepage : NULL;
       return $tokens;
Only in realname.orig: token_realname.inc.orig
