diff --git a/quic/core/quic_bandwidth.h b/quic/core/quic_bandwidth.h
index e3e0cd1..97de22c 100644
--- a/quic/core/quic_bandwidth.h
+++ b/quic/core/quic_bandwidth.h
@@ -17,6 +17,7 @@
 #include "net/third_party/quiche/src/quic/core/quic_time.h"
 #include "net/third_party/quiche/src/quic/core/quic_types.h"
 #include "net/third_party/quiche/src/quic/platform/api/quic_export.h"
+#include "net/third_party/quiche/src/quic/platform/api/quic_flag_utils.h"
 
 namespace quic {
 
@@ -54,8 +55,23 @@
   // Create a new QuicBandwidth based on the bytes per the elapsed delta.
   static inline QuicBandwidth FromBytesAndTimeDelta(QuicByteCount bytes,
                                                     QuicTime::Delta delta) {
-    return QuicBandwidth((8 * bytes * kNumMicrosPerSecond) /
-                         delta.ToMicroseconds());
+    if (!GetQuicReloadableFlag(quic_round_up_tiny_bandwidth)) {
+      return QuicBandwidth((8 * bytes * kNumMicrosPerSecond) /
+                           delta.ToMicroseconds());
+    }
+
+    if (bytes == 0) {
+      return QuicBandwidth(0);
+    }
+
+    // 1 bit is 1000000 micro bits.
+    int64_t num_micro_bits = 8 * bytes * kNumMicrosPerSecond;
+    if (num_micro_bits < delta.ToMicroseconds()) {
+      QUIC_RELOADABLE_FLAG_COUNT(quic_round_up_tiny_bandwidth);
+      return QuicBandwidth(1);
+    }
+
+    return QuicBandwidth(num_micro_bits / delta.ToMicroseconds());
   }
 
   inline int64_t ToBitsPerSecond() const { return bits_per_second_; }
diff --git a/quic/core/quic_bandwidth_test.cc b/quic/core/quic_bandwidth_test.cc
index 005eef0..0a32e4e 100644
--- a/quic/core/quic_bandwidth_test.cc
+++ b/quic/core/quic_bandwidth_test.cc
@@ -58,6 +58,18 @@
   EXPECT_EQ(QuicBandwidth::FromKBytesPerSecond(10),
             QuicBandwidth::FromBytesAndTimeDelta(
                 1000, QuicTime::Delta::FromMilliseconds(100)));
+
+  EXPECT_EQ(QuicBandwidth::Zero(), QuicBandwidth::FromBytesAndTimeDelta(
+                                       0, QuicTime::Delta::FromSeconds(9)));
+
+  if (GetQuicReloadableFlag(quic_round_up_tiny_bandwidth)) {
+    EXPECT_EQ(QuicBandwidth::FromBitsPerSecond(1),
+              QuicBandwidth::FromBytesAndTimeDelta(
+                  1, QuicTime::Delta::FromSeconds(9)));
+  } else {
+    EXPECT_EQ(QuicBandwidth::Zero(), QuicBandwidth::FromBytesAndTimeDelta(
+                                         1, QuicTime::Delta::FromSeconds(9)));
+  }
 }
 
 TEST_F(QuicBandwidthTest, Scale) {
diff --git a/quic/core/quic_flags_list.h b/quic/core/quic_flags_list.h
index 0662174..6c87293 100644
--- a/quic/core/quic_flags_list.h
+++ b/quic/core/quic_flags_list.h
@@ -63,6 +63,7 @@
 QUIC_FLAG(FLAGS_quic_reloadable_flag_quic_reject_spdy_frames, true)
 QUIC_FLAG(FLAGS_quic_reloadable_flag_quic_reject_spdy_settings, true)
 QUIC_FLAG(FLAGS_quic_reloadable_flag_quic_require_handshake_confirmation, false)
+QUIC_FLAG(FLAGS_quic_reloadable_flag_quic_round_up_tiny_bandwidth, false)
 QUIC_FLAG(FLAGS_quic_reloadable_flag_quic_send_goaway_with_connection_close, false)
 QUIC_FLAG(FLAGS_quic_reloadable_flag_quic_send_path_response, false)
 QUIC_FLAG(FLAGS_quic_reloadable_flag_quic_send_timestamps, false)
