diff --git a/daemon/table/pit-entry.cpp b/daemon/table/pit-entry.cpp
index e089a09..35cc2e0 100644
--- a/daemon/table/pit-entry.cpp
+++ b/daemon/table/pit-entry.cpp
@@ -126,10 +126,38 @@
   return false;
 }
 
-bool
-Entry::addNonce(uint32_t nonce)
+int
+Entry::findNonce(uint32_t nonce, const Face& face) const
 {
-  return m_nonceList.add(nonce);
+  // TODO should we ignore expired in/out records?
+
+  int dnw = DUPLICATE_NONCE_NONE;
+
+  for (InRecordCollection::const_iterator it = m_inRecords.begin();
+       it != m_inRecords.end(); ++it) {
+    if (it->getLastNonce() == nonce) {
+      if (it->getFace().get() == &face) {
+        dnw |= DUPLICATE_NONCE_IN_SAME;
+      }
+      else {
+        dnw |= DUPLICATE_NONCE_IN_OTHER;
+      }
+    }
+  }
+
+  for (OutRecordCollection::const_iterator it = m_outRecords.begin();
+       it != m_outRecords.end(); ++it) {
+    if (it->getLastNonce() == nonce) {
+      if (it->getFace().get() == &face) {
+        dnw |= DUPLICATE_NONCE_OUT_SAME;
+      }
+      else {
+        dnw |= DUPLICATE_NONCE_OUT_OTHER;
+      }
+    }
+  }
+
+  return dnw;
 }
 
 InRecordCollection::iterator
@@ -170,7 +198,6 @@
   }
 
   it->update(interest);
-  m_nonceList.add(interest.getNonce());
   return it;
 }
 
