diff --git a/flag.module b/flag.module
index ee280fe..8df2907 100644
--- a/flag.module
+++ b/flag.module
@@ -532,7 +532,13 @@ function flag_user($op, &$edit, &$account, $category = NULL) {
       $result = db_query("SELECT fc.fid, fc.content_id, c.count FROM {flag_content} fc LEFT JOIN {flag_counts} c ON fc.content_id = c.content_id AND fc.content_type = c.content_type WHERE fc.uid = %d", $account->uid);
       while ($flag_data = db_fetch_object($result)) {
         $flag_data->count--;
-        db_query("UPDATE {flag_counts} SET count = %d WHERE fid = %d AND content_id = %d", $flag_data->count, $flag_data->fid, $flag_data->content_id);
+        // Only decrement the flag count table if it's greater than 1.
+        if ($flag_data->count > 0) {
+          db_query("UPDATE {flag_counts} SET count = %d WHERE fid = %d AND content_id = %d", $flag_data->count, $flag_data->fid, $flag_data->content_id);
+        }
+        elseif ($flag_data->count == 0) {
+          db_query("DELETE FROM {flag_counts} WHERE fid = %d AND content_id = %d", $flag_data->fid, $flag_data->content_id);
+        }
       }
       db_query("DELETE FROM {flag_content} WHERE uid = %d", $account->uid);
 
