Index: /trunk/glueforge/templates/psdb/code.tt
===================================================================
--- /trunk/glueforge/templates/psdb/code.tt	(revision 4276)
+++ /trunk/glueforge/templates/psdb/code.tt	(revision 4277)
@@ -3,4 +3,5 @@
 #define [% namespace FILTER upper %]_TABLE_NAME "[% table_name %]"
 #define [% namespace FILTER upper %]_INDEX_NAME "position"
+#define MAX_STRING_LENGTH 1024
 
 [% INCLUDE alloc.tt %]
Index: /trunk/glueforge/templates/psdb/popfits.tt
===================================================================
--- /trunk/glueforge/templates/psdb/popfits.tt	(revision 4276)
+++ /trunk/glueforge/templates/psdb/popfits.tt	(revision 4277)
@@ -1,4 +1,24 @@
 bool [% namespace %]PopFits(psDB *dbh, psFits *fits, unsigned long long limit)
 {
-    return [% namespace %]SelectRowsFits(dbh, fits, NULL, limit);
+    char            query[MAX_STRING_LENGTH];
+
+    if (!fooSelectRowsFits(dbh, fits, NULL, limit)) {
+        // psError(); something bad happened
+        return false;
+    }
+
+    // remove limit rows from the end of the database
+    if (snprintf(query, MAX_STRING_LENGTH,
+                "DELETE FROM %s ORDER BY %s DESC LIMIT %lld",
+                [% namespace FILTER upper %]_TABLE_NAME, [% namespace FILTER upper %]_INDEX_NAME, limit) < 0) {
+        // psError(); something bad happened
+        return false;
+    }
+            
+    if (!p_psDBRunQuery(dbh, query)) {
+        // psError(); something bad happened
+        return false;
+    }
+
+    return true;
 }
