Attached patch fixes it. Single line, should be easy to understand.
diff -ruN dpkg-1.14.16.6/debian/changelog dpkg-1.14.16.6.1/debian/changelog
--- dpkg-1.14.16.6/debian/changelog 2008-01-26 13:35:53.000000000 -0600
+++ dpkg-1.14.16.6.1/debian/changelog 2008-03-22 13:40:45.537462000 -0500
@@ -1,3 +1,11 @@
+dpkg (1.14.16.6.1) unstable; urgency=medium
+
+ * NMU.
+ * When a package is completely purged, remove it's entry from status.
+ Closes: #472208.
+
+ -- Adam Heath <[EMAIL PROTECTED]> Sat, 22 Mar 2008 13:40:37 -0500
+
dpkg (1.14.16.6) unstable; urgency=medium
* Let dpkg-gensymbols skip directories which are just symlinks when scanning
diff -ruN dpkg-1.14.16.6/lib/database.c dpkg-1.14.16.6.1/lib/database.c
--- dpkg-1.14.16.6/lib/database.c 2008-01-26 12:16:35.000000000 -0600
+++ dpkg-1.14.16.6.1/lib/database.c 2008-03-22 13:38:31.945397000 -0500
@@ -96,7 +96,7 @@
* out.
*/
if (info == &pkg->installed &&
- (pkg->want != want_unknown ||
+ ((pkg->want != want_unknown && pkg->want != want_purge) ||
pkg->eflag != eflagv_ok ||
pkg->status != stat_notinstalled ||
informativeversion(&pkg->configversion)))