diff --git a/model/fw/nacks.cc b/model/fw/nacks.cc
index bda2582..e57d66e 100644
--- a/model/fw/nacks.cc
+++ b/model/fw/nacks.cc
@@ -114,16 +114,6 @@
       Ptr<Interest> nack = Create<Interest> (*interest);
       nack->SetNack (Interest::NACK_LOOP);
 
-      FwHopCountTag hopCountTag;
-      if (interest->GetPayload ()->PeekPacketTag (hopCountTag))
-        {
-     	  nack->GetPayload ()->AddPacketTag (hopCountTag);
-        }
-      else
-        {
-          NS_LOG_DEBUG ("No FwHopCountTag tag associated with received duplicated Interest");
-        }
-
       inFace->SendInterest (nack);
       m_outNacks (nack, inFace);
     }
@@ -139,16 +129,6 @@
       Ptr<Interest> nack = Create<Interest> (*interest);
       nack->SetNack (Interest::NACK_GIVEUP_PIT);
 
-      FwHopCountTag hopCountTag;
-      if (interest->GetPayload ()->PeekPacketTag (hopCountTag))
-        {
-     	  nack->GetPayload ()->AddPacketTag (hopCountTag);
-        }
-      else
-        {
-          NS_LOG_DEBUG ("No FwHopCountTag tag associated with original Interest");
-        }
-
       BOOST_FOREACH (const pit::IncomingFace &incoming, pitEntry->GetIncoming ())
         {
           NS_LOG_DEBUG ("Send NACK for " << boost::cref (nack->GetName ()) << " to " << boost::cref (*incoming.m_face));
@@ -195,16 +175,6 @@
       Ptr<Interest> interest = Create<Interest> (*nack);
       interest->SetNack (Interest::NORMAL_INTEREST);
 
-      FwHopCountTag hopCountTag;
-      if (nack->GetPayload ()->PeekPacketTag (hopCountTag))
-        {
-     	  interest->GetPayload ()->AddPacketTag (hopCountTag);
-        }
-      else
-        {
-          NS_LOG_DEBUG ("No FwHopCountTag tag associated with received NACK");
-        }
-
       bool propagated = DoPropagateInterest (inFace, interest, pitEntry);
       if (!propagated)
         {
