--- realname.module
+++ (clipboard)
@@ -715,7 +715,7 @@
  *   $account - the user object to update.
  *
  * @return
- *   The retreived "real name" string.
+ *   The retrieved "real name" string.
  */
 function realname_make_name(&$account) {
   $users = &drupal_static('users',array());
@@ -732,16 +732,27 @@
     return $users[$account->uid];
   }
 
+  // Make realname.
   $result = _realname_make_name($account);
+
+  // If empty, return username.
   if (empty($result)) {
     return $account->name;
   }
-  if (!db_result(db_query("SELECT uid FROM {realname} WHERE uid=%d", $account->uid))) { 
+
+  // Check if realname exists in the database.
+  $saved_realname = db_result(db_query("SELECT realname FROM {realname} WHERE uid=%d", $account->uid));
+
+  // If not, insert.
+  if (!$saved_realname) { 
     db_query("INSERT INTO {realname} (uid, realname) VALUES(%d, '%s')", $account->uid, $result);
   }
-  else {
+
+  // If new realname is different than saved realname, update.
+  else if ($result != $saved_realname) {
     db_query("UPDATE {realname} SET realname='%s' where uid=%d", $result, $account->uid);
   }
+
   return $result;
 }
 
