diff --git a/lib/ngtcp2_conn.c b/lib/ngtcp2_conn.c
index 9ba2984b2c96aa56281ff216346d027715b5fc2b..ff8c608b776dac873fa4e187ed83d383929b70b8 100644
--- a/lib/ngtcp2_conn.c
+++ b/lib/ngtcp2_conn.c
@@ -595,6 +595,12 @@ static void conn_update_recv_rate(ngtcp2_conn *conn, size_t datalen,
   window = conn->cstat.min_rtt == UINT64_MAX ? conn->cstat.initial_rtt
                                              : conn->cstat.min_rtt * 2;
 
+  /* If settings.initial_rtt is zero for whatever reason then window
+     can be zero and we can end up with a division by zero error when
+     bps is set below. If this assert fails, check that
+     settings.initial_rtt is not zero. */
+  assert(window);
+
   if (window > ts - conn->rx.rate.start_ts) {
     return;
   }