diff --git a/tools/chunks/catchunks/pipeline-interests-adaptive.cpp b/tools/chunks/catchunks/pipeline-interests-adaptive.cpp
index 3b3e0cd..891b94e 100644
--- a/tools/chunks/catchunks/pipeline-interests-adaptive.cpp
+++ b/tools/chunks/catchunks/pipeline-interests-adaptive.cpp
@@ -34,8 +34,6 @@
 
 namespace ndn::chunks {
 
-constexpr double PipelineInterestsAdaptive::MIN_SSTHRESH;
-
 PipelineInterestsAdaptive::PipelineInterestsAdaptive(Face& face,
                                                      RttEstimatorWithStats& rttEstimator,
                                                      const Options& opts)
@@ -83,6 +81,7 @@
     return;
 
   bool hasTimeout = false;
+  uint64_t highTimeoutSeg = 0;
 
   for (auto& entry : m_segmentInfo) {
     SegmentInfo& segInfo = entry.second;
@@ -91,13 +90,14 @@
       if (timeElapsed > segInfo.rto) { // timer expired?
         m_nTimeouts++;
         hasTimeout = true;
+        highTimeoutSeg = std::max(highTimeoutSeg, entry.first);
         enqueueForRetransmission(entry.first);
       }
     }
   }
 
   if (hasTimeout) {
-    recordTimeout();
+    recordTimeout(highTimeoutSeg);
     schedulePackets();
   }
 
@@ -227,9 +227,7 @@
               << ", rto=" << segInfo.rto.count() / 1e6 << "ms\n";
   }
 
-  if (m_highData < recvSegNo) {
-    m_highData = recvSegNo;
-  }
+  m_highData = std::max(m_highData, recvSegNo);
 
   // for segments in retx queue, we must not decrement m_nInFlight
   // because it was already decremented when the segment timed out
@@ -310,7 +308,7 @@
     case lp::NackReason::CONGESTION:
       // treated the same as timeout for now
       enqueueForRetransmission(segNo);
-      recordTimeout();
+      recordTimeout(segNo);
       schedulePackets();
       break;
     default:
@@ -327,16 +325,19 @@
     return;
 
   m_nTimeouts++;
-  enqueueForRetransmission(getSegmentFromPacket(interest));
-  recordTimeout();
+
+  uint64_t segNo = getSegmentFromPacket(interest);
+  enqueueForRetransmission(segNo);
+  recordTimeout(segNo);
   schedulePackets();
 }
 
 void
-PipelineInterestsAdaptive::recordTimeout()
+PipelineInterestsAdaptive::recordTimeout(uint64_t segNo)
 {
-  if (m_options.disableCwa || m_highData > m_recPoint) {
-    // react to only one timeout per RTT (conservative window adaptation)
+  if (m_options.disableCwa || segNo > m_recPoint) {
+    // interests that are still outstanding during a timeout event
+    // should not trigger another window decrease later (bug #5202)
     m_recPoint = m_highInterest;
 
     decreaseWindow();
diff --git a/tools/chunks/catchunks/pipeline-interests-adaptive.hpp b/tools/chunks/catchunks/pipeline-interests-adaptive.hpp
index 15e4dcf..7b7aad8 100644
--- a/tools/chunks/catchunks/pipeline-interests-adaptive.hpp
+++ b/tools/chunks/catchunks/pipeline-interests-adaptive.hpp
@@ -172,7 +172,7 @@
   handleLifetimeExpiration(const Interest& interest);
 
   void
-  recordTimeout();
+  recordTimeout(uint64_t segNo);
 
   void
   enqueueForRetransmission(uint64_t segNo);
