diff --git a/tests/test-full-sync.cpp b/tests/test-full-sync.cpp
index 01a5375..d8335b0 100644
--- a/tests/test-full-sync.cpp
+++ b/tests/test-full-sync.cpp
@@ -394,6 +394,46 @@
   }
 }
 
+BOOST_AUTO_TEST_CASE(DelayedSecondSegment)
+{
+  addNode(0);
+
+  for (int i = 0; i < 300; i++) {
+    Name prefixToPublish("userNode0-" + to_string(i));
+    nodes[0]->addUserNode(prefixToPublish);
+    nodes[0]->publishName(prefixToPublish);
+  }
+
+  advanceClocks(ndn::time::milliseconds(10), 100);
+
+  Name syncInterestName(syncPrefix);
+  IBLT iblt(40);
+  iblt.appendToName(syncInterestName);
+
+  nodes[0]->onSyncInterest(syncPrefix, Interest(syncInterestName));
+
+  advanceClocks(ndn::time::milliseconds(10));
+
+  BOOST_CHECK_EQUAL(nodes[0]->m_segmentPublisher.m_ims.size(), 2);
+  // Expire contents from segmentPublisher
+  advanceClocks(ndn::time::milliseconds(10), 100);
+  BOOST_CHECK_EQUAL(nodes[0]->m_segmentPublisher.m_ims.size(), 0);
+
+  // Get data name from face and increase segment number to form next interest
+  Name dataName = faces[0]->sentData.front().getName();
+  Name interestName = dataName.getSubName(0, dataName.size() - 1);
+  interestName.appendSegment(1);
+  faces[0]->sentData.clear();
+
+  nodes[0]->onSyncInterest(syncPrefix, Interest(interestName));
+  advanceClocks(ndn::time::milliseconds(10));
+
+  // Should have repopulated SegmentPublisher
+  BOOST_CHECK_EQUAL(nodes[0]->m_segmentPublisher.m_ims.size(), 2);
+  // Should have received the second data segment this time
+  BOOST_CHECK_EQUAL(faces[0]->sentData.front().getName()[-1].toSegment(), 1);
+}
+
 BOOST_AUTO_TEST_SUITE_END()
 
 } // namespace psync
\ No newline at end of file
diff --git a/tests/test-partial-producer.cpp b/tests/test-partial-producer.cpp
index 2ff1a5d..9555c7d 100644
--- a/tests/test-partial-producer.cpp
+++ b/tests/test-partial-producer.cpp
@@ -83,6 +83,7 @@
 
   Name syncInterestName(syncPrefix);
   syncInterestName.append("sync");
+  Name syncInterestPrefix = syncInterestName;
 
   BloomFilter bf(20, 0.001);
   bf.appendToName(syncInterestName);
@@ -92,7 +93,7 @@
   Interest syncInterest(syncInterestName);
   syncInterest.setInterestLifetime(time::milliseconds(1000));
   syncInterest.setNonce(1);
-  BOOST_REQUIRE_NO_THROW(producer.onSyncInterest(syncInterestName, syncInterest));
+  BOOST_REQUIRE_NO_THROW(producer.onSyncInterest(syncInterestPrefix, syncInterest));
   face.processEvents(time::milliseconds(10));
   BOOST_CHECK_EQUAL(producer.m_pendingEntries.size(), 1);
 
@@ -100,7 +101,7 @@
 
   // Same interest again - size of pending interest should remain same, but expirationEvent should change
   syncInterest.setNonce(2);
-  BOOST_REQUIRE_NO_THROW(producer.onSyncInterest(syncInterestName, syncInterest));
+  BOOST_REQUIRE_NO_THROW(producer.onSyncInterest(syncInterestPrefix, syncInterest));
   face.processEvents(time::milliseconds(10));
   BOOST_CHECK_EQUAL(producer.m_pendingEntries.size(), 1);
 
diff --git a/tests/test-partial-sync.cpp b/tests/test-partial-sync.cpp
index 6d07644..d4c1784 100644
--- a/tests/test-partial-sync.cpp
+++ b/tests/test-partial-sync.cpp
@@ -362,6 +362,19 @@
   consumers[0]->sendHelloInterest();
   advanceClocks(ndn::time::milliseconds(10));
   BOOST_CHECK_EQUAL(numHelloDataRcvd, 1);
+
+  // Simulate sending delayed interest for second segment
+  Name dataName = face.sentData.back().getName();
+  face.sentData.clear();
+  BOOST_CHECK_EQUAL(producer->m_segmentPublisher.m_ims.size(), 2);
+
+  advanceClocks(ndn::time::milliseconds(1000));
+  BOOST_CHECK_EQUAL(producer->m_segmentPublisher.m_ims.size(), 0);
+
+  producer->onHelloInterest(consumers[0]->m_helloInterestPrefix, Interest(dataName));
+  advanceClocks(ndn::time::milliseconds(10));
+  BOOST_CHECK_EQUAL(producer->m_segmentPublisher.m_ims.size(), 2);
+  BOOST_CHECK_EQUAL(face.sentData.front().getName()[-1].toSegment(), 1);
 }
 
 BOOST_AUTO_TEST_CASE(SegmentedSync)
@@ -382,6 +395,13 @@
   advanceClocks(ndn::time::milliseconds(10));
   BOOST_CHECK_EQUAL(numHelloDataRcvd, 1);
 
+  // To be used later to simulate sending delayed segmented interest
+  ndn::Name syncInterestName(consumers[0]->m_syncInterestPrefix);
+  consumers[0]->m_bloomFilter.appendToName(syncInterestName);
+  syncInterestName.append(consumers[0]->m_iblt);
+  syncInterestName.appendVersion();
+  syncInterestName.appendSegment(1);
+
   oldSeqMap = producer->m_prefixes;
   for (int i = 1; i < 10; i++) {
     producer->updateSeqNo(longNameToExceedDataSize.toUri() + "-" + to_string(i), 1);
@@ -392,6 +412,20 @@
 
   advanceClocks(ndn::time::milliseconds(1500));
   BOOST_CHECK_EQUAL(numSyncDataRcvd, 1);
+
+  // Simulate sending delayed interest for second segment
+  face.sentData.clear();
+  consumerFaces[0]->sentData.clear();
+
+  BOOST_CHECK_EQUAL(producer->m_segmentPublisher.m_ims.size(), 2);
+
+  advanceClocks(ndn::time::milliseconds(2000));
+  BOOST_CHECK_EQUAL(producer->m_segmentPublisher.m_ims.size(), 0);
+
+  producer->onSyncInterest(consumers[0]->m_syncInterestPrefix, Interest(syncInterestName));
+  advanceClocks(ndn::time::milliseconds(10));
+  BOOST_CHECK_EQUAL(producer->m_segmentPublisher.m_ims.size(), 2);
+  BOOST_CHECK_EQUAL(face.sentData.front().getName()[-1].toSegment(), 1);
 }
 
 BOOST_AUTO_TEST_SUITE_END()
diff --git a/tests/test-segment-publisher.cpp b/tests/test-segment-publisher.cpp
index 39881d8..db81f30 100644
--- a/tests/test-segment-publisher.cpp
+++ b/tests/test-segment-publisher.cpp
@@ -126,7 +126,7 @@
   BOOST_CHECK_EQUAL(numRepliesFromStore, 2);
 
   numRepliesFromStore = 0;
-  face.expressInterest(Interest(Name("/hello/world/").appendSegment(0)),
+  face.expressInterest(Interest(Name("/hello/world/")),
                        [this] (const Interest& interest, const Data& data) {
                          numComplete++;
                        },
