diff --git a/call/rampup_tests.cc b/call/rampup_tests.cc
index 8f689e7..8aba18d 100644
--- a/call/rampup_tests.cc
+++ b/call/rampup_tests.cc
@@ -23,6 +23,7 @@
 #include "rtc_base/logging.h"
 #include "rtc_base/platform_thread.h"
 #include "rtc_base/string_encode.h"
+#include "rtc_base/time_utils.h"
 #include "test/encoder_settings.h"
 #include "test/field_trial.h"
 #include "test/gtest.h"
@@ -323,6 +324,10 @@
 }
 
 void RampUpTester::PollStats() {
+  RTC_DCHECK_RUN_ON(task_queue_);
+
+  EnsurePollTimeSet();
+
   pending_task_ = -1;
   Call::Stats stats = sender_call_->GetStats();
   EXPECT_GE(expected_bitrate_bps_, 0);
@@ -334,7 +339,7 @@
     observation_complete_.Set();
   } else {
     pending_task_ = task_queue_->PostDelayedTask([this]() { PollStats(); },
-                                                 kPollIntervalMs);
+                                                 GetIntervalForNextPoll());
   }
 }
 
@@ -422,6 +427,22 @@
   TriggerTestDone();
 }
 
+void RampUpTester::EnsurePollTimeSet() {
+  RTC_DCHECK_RUN_ON(task_queue_);
+  if (!next_scheduled_poll_time_ms_)
+    next_scheduled_poll_time_ms_ = rtc::TimeMillis();
+}
+
+int64_t RampUpTester::GetIntervalForNextPoll() {
+  RTC_DCHECK_RUN_ON(task_queue_);
+  RTC_DCHECK_NE(next_scheduled_poll_time_ms_, 0)
+      << "No call to EnsurePollTimeSet()";
+  auto now = rtc::TimeMillis();
+  next_scheduled_poll_time_ms_ += kPollIntervalMs;
+  auto interval = next_scheduled_poll_time_ms_ - now;
+  return interval > 0 ? interval : 0;
+}
+
 RampUpDownUpTester::RampUpDownUpTester(
     size_t num_video_streams,
     size_t num_audio_streams,
@@ -460,6 +481,8 @@
 RampUpDownUpTester::~RampUpDownUpTester() {}
 
 void RampUpDownUpTester::PollStats() {
+  EnsurePollTimeSet();
+
   pending_task_ = -1;
   bool last_round = (test_state_ == kTestEnd);
 
@@ -482,7 +505,7 @@
 
   if (!last_round) {
     pending_task_ = task_queue_->PostDelayedTask([this]() { PollStats(); },
-                                                 kPollIntervalMs);
+                                                 GetIntervalForNextPoll());
   }
 }
 
diff --git a/call/rampup_tests.h b/call/rampup_tests.h
index 9c2f57d..c07c793 100644
--- a/call/rampup_tests.h
+++ b/call/rampup_tests.h
@@ -112,7 +112,21 @@
   std::vector<uint32_t> video_rtx_ssrcs_;
   std::vector<uint32_t> audio_ssrcs_;
 
+  // Initially zero, then set to the target time in milliseconds for when
+  // PollStats() will next be called.
+  int64_t next_scheduled_poll_time_ms_ = 0;
+
  protected:
+  // Call from within PollStats to ensure that initial PollStats() timestamp
+  // is captured.
+  void EnsurePollTimeSet();
+
+  // Calculates the interval from now and until when PollStats() next should be
+  // called. Internally updates a timestamp, so each call will yield the
+  // subsequent timestamp (in milliseconds).
+  // Must be called from the |task_queue_|.
+  int64_t GetIntervalForNextPoll();
+
   test::SingleThreadedTaskQueueForTesting* const task_queue_;
   test::SingleThreadedTaskQueueForTesting::TaskId pending_task_ = -1;
 };
