Index: flag.install
===================================================================
RCS file: /cvs/drupal-contrib/contributions/modules/flag/Attic/flag.install,v
retrieving revision 1.2.2.32.2.7
diff -u -r1.2.2.32.2.7 flag.install
--- flag.install	28 Oct 2009 00:01:31 -0000	1.2.2.32.2.7
+++ flag.install	12 Dec 2009 23:54:48 -0000
@@ -480,10 +480,10 @@
 }
 
 /**
- * Add auto-increment to the flags.fid column for users upgrading from Drupal 5.
+ * Remove count = 0 rows from the count tables.
  */
 function flag_update_6004() {
-  // Update removed and included in flag_update_6000()
+  // Same update as flag_update_6203()
   return array();
 }
 
@@ -549,6 +549,15 @@
   return $ret;
 }
 
+/**
+ * Remove count = 0 rows from the count tables.
+ */
+function flag_update_6203() {
+  $ret = array();
+  $ret[] = update_sql("DELETE FROM {flag_counts} WHERE count = 0");
+  return $ret;
+}
+
 // This is a replacement for update_sql(). The latter doesn't support placeholders.
 function _flag_update_sql($sql) {
   $args = func_get_args();
Index: flag.inc
===================================================================
RCS file: /cvs/drupal-contrib/contributions/modules/flag/Attic/flag.inc,v
retrieving revision 1.1.2.30.2.18
diff -u -r1.1.2.30.2.18 flag.inc
--- flag.inc	6 Nov 2009 03:06:58 -0000	1.1.2.30.2.18
+++ flag.inc	12 Dec 2009 23:54:46 -0000
@@ -662,9 +662,14 @@
    */
   function _update_count($content_id) {
     $count = db_result(db_query("SELECT COUNT(*) FROM {flag_content} WHERE fid = %d AND content_id = %d", $this->fid, $content_id));
-    $result = db_query("UPDATE {flag_counts} SET count = %d WHERE fid = %d AND content_id = %d", $count, $this->fid, $content_id);
-    if (!db_affected_rows()) {
-      db_query("INSERT INTO {flag_counts} (fid, content_type, content_id, count) VALUES (%d, '%s', %d, %d)", $this->fid, $this->content_type, $content_id, $count);
+    if ($count == 0) {
+      db_query("DELETE FROM {flag_counts} WHERE fid = %d AND content_id = %d", $this->fid, $content_id);
+    }
+    else {
+      db_query("UPDATE {flag_counts} SET count = %d WHERE fid = %d AND content_id = %d", $count, $this->fid, $content_id);
+      if (!db_affected_rows()) {
+        db_query("INSERT INTO {flag_counts} (fid, content_type, content_id, count) VALUES (%d, '%s', %d, %d)", $this->fid, $this->content_type, $content_id, $count);
+      }
     }
   }
 
