diff --git a/CHANGELOG.txt b/CHANGELOG.txt
index 48dce59..f9f9fd0 100644
--- a/CHANGELOG.txt
+++ b/CHANGELOG.txt
@@ -22,6 +22,7 @@ Metatag 7.x-1.x-dev, xxxx-xx-xx
   entities that old versions would have saved.
 #1857116 by DamienMcKenna: Don't purge 'file' {metatag} records until #1857334
   is decided.
+#1857116 by DamienMcKenna: Improved notification if data is purged.
 
 
 Metatag 7.x-1.0-beta4, 2012-11-17
diff --git a/metatag.install b/metatag.install
index 79d33fb..b3de233 100644
--- a/metatag.install
+++ b/metatag.install
@@ -418,9 +418,47 @@ function metatag_update_7006() {
     'wysiwyg_profile',
   );
   foreach ($types as $type) {
-    db_delete('metatag')
+    $num_deleted = db_delete('metatag')
       ->condition('entity_type', $type)
       ->execute();
-    drupal_set_message(t('Removed all meta tags for the %type entity type that <em>may</em> have existed, it does not support meta tags.', array('%type' => $type)));
+    if ($num_deleted > 0) {
+      drupal_set_message(t('Removed @count meta tag record(s) for the @type entity type, it does not support meta tags.', array('@count' => $num_deleted, '@type' => $type)));
+    }
+  }
+}
+
+/**
+ * Remove metatag records for objects that have been deleted; older versions of
+ * Metatag may have failed to purge these.
+ */
+function metatag_update_7007() {
+  $result = db_query("DELETE m
+    FROM {metatag} m
+    LEFT OUTER JOIN {node} n
+    	ON m.entity_id=n.nid
+    WHERE m.entity_type='node'
+    	AND n.nid IS NULL");
+  if ($result->rowCount() > 0) {
+    drupal_set_message(t('Removed @count meta tag record(s) for nodes that had been purged.', array('@count' => $result->rowCount())));
+  }
+
+  $result = db_query("DELETE m
+    FROM {metatag} m
+    LEFT OUTER JOIN {users} u
+    	ON m.entity_id=u.uid
+    WHERE m.entity_type='user'
+    	AND u.uid IS NULL");
+  if ($result->rowCount() > 0) {
+    drupal_set_message(t('Removed @count meta tag record(s) for users that had been purged.', array('@count' => $result->rowCount())));
+  }
+
+  $result = db_query("DELETE m
+    FROM {metatag} m
+    LEFT OUTER JOIN {taxonomy_term_data} t
+    	ON m.entity_id=t.tid
+    WHERE m.entity_type='taxonomy_term'
+    	AND t.tid IS NULL");
+  if ($result->rowCount() > 0) {
+    drupal_set_message(t('Removed @count meta tag record(s) for taxonomy terms that had been purged.', array('@count' => $result->rowCount())));
   }
 }
