--- postcount_rank.module.orig	2005-10-10 20:58:57.836421592 +0200
+++ postcount_rank.module	2005-10-10 21:01:07.755670864 +0200
@@ -56,12 +56,18 @@
     $count = db_result(db_query("SELECT COUNT(*) from {node} where uid=%d",$user->uid));
     $count += db_result(db_query("SELECT COUNT(*) from {comments} where uid=%d",$user->uid));
     $ranks = variable_get('postcount_rank_metrics',array(''));
-    while (current($ranks) !== FALSE && current($ranks) < $count) next($ranks);
-    prev($ranks);
-    if (key($ranks) != $user->{$name})  { // if the calculated rank isn't what's set
+    $rank = '';
+    foreach ($ranks as $key => $value) {
+      if ($value > $count || $value === '') {
+        break;
+      }
+      $rank = $key;
+    }
+    // if it's: NOT what's already set AND NOT a pre-set title
+    if ($rank != $user->{$name} && ($user->{$name} === NULL || $ranks[$user->{$name}] !== '')) {
       if (!isset($user->{$name}))
-        db_query("INSERT INTO {profile_values} (fid,uid,value) VALUES (%d,%d,'%s')",$fid,$user->uid,key($ranks));
-      else db_query("UPDATE {profile_values} SET value='%s' WHERE fid=%d AND uid=%d",key($ranks),$fid,$user->uid);
+        db_query("INSERT INTO {profile_values} (fid,uid,value) VALUES (%d,%d,'%s')",$fid,$user->uid,$rank);
+      else db_query("UPDATE {profile_values} SET value='%s' WHERE fid=%d AND uid=%d",$rank,$fid,$user->uid);
     }
   }
 }
