diff --git a/PSync/consumer.cpp b/PSync/consumer.cpp
index 24483a7..ce4a65d 100644
--- a/PSync/consumer.cpp
+++ b/PSync/consumer.cpp
@@ -68,6 +68,8 @@
 void
 Consumer::stop()
 {
+  m_scheduler.cancelAllEvents();
+
   if (m_syncFetcher) {
     m_syncFetcher->stop();
     m_syncFetcher.reset();
@@ -93,6 +95,7 @@
   SegmentFetcher::Options options;
   options.interestLifetime = m_helloInterestLifetime;
   options.maxTimeout = m_helloInterestLifetime;
+  options.rttOptions.initialRto = m_syncInterestLifetime;
 
   m_helloFetcher = SegmentFetcher::start(m_face, helloInterest,
                                          ndn::security::v2::getAcceptAllValidator(), options);
@@ -179,6 +182,7 @@
   SegmentFetcher::Options options;
   options.interestLifetime = m_syncInterestLifetime;
   options.maxTimeout = m_syncInterestLifetime;;
+  options.rttOptions.initialRto = m_syncInterestLifetime;
 
   m_syncFetcher = SegmentFetcher::start(m_face, syncInterest,
                                         ndn::security::v2::getAcceptAllValidator(), options);
diff --git a/PSync/full-producer.cpp b/PSync/full-producer.cpp
index a7a0b24..c31504c 100644
--- a/PSync/full-producer.cpp
+++ b/PSync/full-producer.cpp
@@ -107,6 +107,7 @@
   SegmentFetcher::Options options;
   options.interestLifetime = m_syncInterestLifetime;
   options.maxTimeout = m_syncInterestLifetime;
+  options.rttOptions.initialRto = m_syncInterestLifetime;
 
   m_fetcher = SegmentFetcher::start(m_face, syncInterest,
                                     ndn::security::v2::getAcceptAllValidator(), options);
@@ -341,14 +342,10 @@
 void
 FullProducer::deletePendingInterests(const ndn::Name& interestName)
 {
-  for (auto it = m_pendingEntries.begin(); it != m_pendingEntries.end();) {
-    if (it->first == interestName) {
-      NDN_LOG_TRACE("Delete pending interest: " << interestName);
-      it = m_pendingEntries.erase(it);
-    }
-    else {
-      ++it;
-    }
+  auto it = m_pendingEntries.find(interestName);
+  if (it != m_pendingEntries.end()) {
+    NDN_LOG_TRACE("Delete pending interest: " << interestName);
+    it = m_pendingEntries.erase(it);
   }
 }
 
diff --git a/PSync/full-producer.hpp b/PSync/full-producer.hpp
index f51ea7d..82b7be6 100644
--- a/PSync/full-producer.hpp
+++ b/PSync/full-producer.hpp
@@ -97,7 +97,7 @@
   void
   publishName(const ndn::Name& prefix, ndn::optional<uint64_t> seq = ndn::nullopt);
 
-private:
+PSYNC_PUBLIC_WITH_TESTS_ELSE_PRIVATE:
   /**
    * @brief Send sync interest for full synchronization
    *
@@ -108,7 +108,6 @@
   void
   sendSyncInterest();
 
-PSYNC_PUBLIC_WITH_TESTS_ELSE_PRIVATE:
   /**
    * @brief Process sync interest from other parties
    *
diff --git a/tests/test-consumer.cpp b/tests/test-consumer.cpp
index d1e6115..67b524c 100644
--- a/tests/test-consumer.cpp
+++ b/tests/test-consumer.cpp
@@ -18,6 +18,7 @@
  **/
 
 #include "PSync/consumer.hpp"
+#include "unit-test-time-fixture.hpp"
 
 #include <boost/test/unit_test.hpp>
 #include <ndn-cxx/name.hpp>
@@ -56,6 +57,29 @@
   BOOST_CHECK(!consumer.addSubscription(subscription));
 }
 
+BOOST_FIXTURE_TEST_CASE(ConstantTimeoutForFirstSegment, ndn::tests::UnitTestTimeFixture)
+{
+  util::DummyClientFace face(io, {true, true});
+  Consumer consumer(Name("/psync"), face,
+                    [] (const vector<Name>&) {},
+                    [] (const vector<MissingDataInfo>&) {},
+                    40, 0.001,
+                    ndn::time::milliseconds(4000),
+                    ndn::time::milliseconds(4000));
+
+  consumer.sendHelloInterest();
+  advanceClocks(ndn::time::milliseconds(4000));
+  BOOST_CHECK_EQUAL(face.sentInterests.size(), 1);
+  face.sentInterests.clear();
+  consumer.stop();
+
+  consumer.m_iblt = ndn::Name("test");
+  consumer.sendSyncInterest();
+  advanceClocks(ndn::time::milliseconds(4000));
+  BOOST_CHECK_EQUAL(face.sentInterests.size(), 1);
+  consumer.stop();
+}
+
 BOOST_AUTO_TEST_SUITE_END()
 
 } // namespace psync
\ No newline at end of file
diff --git a/tests/test-full-producer.cpp b/tests/test-full-producer.cpp
index 8190446..2bd7db4 100644
--- a/tests/test-full-producer.cpp
+++ b/tests/test-full-producer.cpp
@@ -18,6 +18,7 @@
  **/
 
 #include "PSync/full-producer.hpp"
+#include "unit-test-time-fixture.hpp"
 
 #include <boost/test/unit_test.hpp>
 #include <ndn-cxx/name.hpp>
@@ -50,6 +51,20 @@
   BOOST_REQUIRE_NO_THROW(node.onSyncInterest(syncPrefix, Interest(syncInterestName)));
 }
 
+BOOST_FIXTURE_TEST_CASE(ConstantTimeoutForFirstSegment, ndn::tests::UnitTestTimeFixture)
+{
+  Name syncPrefix("/psync"), userNode("/testUser");
+  util::DummyClientFace face(io, {true, true});
+
+  FullProducer node(40, face, syncPrefix, userNode, nullptr, ndn::time::milliseconds(8000));
+  advanceClocks(ndn::time::milliseconds(10));
+  face.sentInterests.clear();
+
+  // full sync sends the next one in interest lifetime / 2 +- jitter
+  advanceClocks(ndn::time::milliseconds(6000));
+  BOOST_CHECK_EQUAL(face.sentInterests.size(), 1);
+}
+
 BOOST_AUTO_TEST_SUITE_END()
 
 } // namespace psync
\ No newline at end of file
