diff --git a/utils/ndn-limits.cc b/utils/ndn-limits.cc
index a14abb2..d53e370 100644
--- a/utils/ndn-limits.cc
+++ b/utils/ndn-limits.cc
@@ -140,7 +140,7 @@
 {
   if (!IsEnabled ()) return true;
 
-  if (m_curMaxLimit - m_outstanding > 1.0)
+  if (m_curMaxLimit - m_outstanding >= 1.0)
     {
       // static UniformVariable acceptanceProbability (0, m_curMaxLimit);
       // double value = acceptanceProbability.GetValue ();
diff --git a/utils/ndn-pit-queue.cc b/utils/ndn-pit-queue.cc
index b287308..f8feb72 100644
--- a/utils/ndn-pit-queue.cc
+++ b/utils/ndn-pit-queue.cc
@@ -22,18 +22,21 @@
 
 #include "ns3/ndn-face.h"
 #include "ns3/ndn-pit-entry.h"
+#include "ns3/log.h"
 
 #include "ns3/assert.h"
 
 using namespace std;
 using namespace boost;
 
+NS_LOG_COMPONENT_DEFINE ("ndn.PitQueue");
+
 namespace ns3 {
 namespace ndn {
 
 PitQueue::PitQueue ()
-  : m_maxQueueSize (10)
-  , m_lastQueue (m_queues.begin ())
+  : m_maxQueueSize (20)
+  , m_lastQueue (m_queues.end ())
 {
 }
   
@@ -58,6 +61,7 @@
   if (queue == m_queues.end ())
     {
       pair<PerInFaceQueue::iterator, bool> itemPair = m_queues.insert (make_pair (inFace, boost::make_shared<Queue> ()));
+      m_lastQueue = m_queues.end (); // for some reason end() iterator is invalidated when new item is inserted
       NS_ASSERT (itemPair.second == true);
 
       queue = itemPair.first;
@@ -90,7 +94,9 @@
     }
 
   if (queue == m_queues.end ())
-    queue = m_queues.begin (); // circle to the beginning
+    {
+      queue = m_queues.begin (); // circle to the beginning
+    }
 
   while (queue != m_queues.end () && queue->second->size () == 0) // advance iterator
     {
@@ -157,7 +163,7 @@
 bool
 PitQueue::IsEmpty () const
 {
-  bool isEmpty = (m_queues.size () == 0);
+  bool isEmpty = true;
 
   for (PerInFaceQueue::const_iterator queue = m_queues.begin ();
        queue != m_queues.end ();
