diff --git a/src/core/iomgr/pollset_multipoller_with_epoll.c b/src/core/iomgr/pollset_multipoller_with_epoll.c
index 8e585a007d8a0476868fe834c541990b698ecb09..e5e3435febf369854785e7b22a9c9dabc8a25652 100644
--- a/src/core/iomgr/pollset_multipoller_with_epoll.c
+++ b/src/core/iomgr/pollset_multipoller_with_epoll.c
@@ -100,8 +100,9 @@ static int multipoll_with_epoll_pollset_maybe_work(
   if (gpr_time_cmp(deadline, gpr_inf_future) == 0) {
     timeout_ms = -1;
   } else {
-    timeout_ms = gpr_time_to_millis(gpr_time_sub(deadline, now));
-    if (timeout_ms <= 0) {
+    timeout_ms = gpr_time_to_millis(
+        gpr_time_add(gpr_time_sub(deadline, now), gpr_time_from_micros(500)));
+    if (timeout_ms < 0) {
       return 1;
     }
   }
diff --git a/src/core/iomgr/pollset_multipoller_with_poll_posix.c b/src/core/iomgr/pollset_multipoller_with_poll_posix.c
index 5ee698073291d3a3bd4a5a552c36a849883ec731..d21c52c0f00f9a55045dc53c26d337bfe9699073 100644
--- a/src/core/iomgr/pollset_multipoller_with_poll_posix.c
+++ b/src/core/iomgr/pollset_multipoller_with_poll_posix.c
@@ -116,8 +116,9 @@ static int multipoll_with_poll_pollset_maybe_work(
   if (gpr_time_cmp(deadline, gpr_inf_future) == 0) {
     timeout = -1;
   } else {
-    timeout = gpr_time_to_millis(gpr_time_sub(deadline, now));
-    if (timeout <= 0) {
+    timeout = gpr_time_to_millis(
+        gpr_time_add(gpr_time_sub(deadline, now), gpr_time_from_micros(500)));
+    if (timeout < 0) {
       return 1;
     }
   }
diff --git a/src/core/iomgr/pollset_posix.c b/src/core/iomgr/pollset_posix.c
index db704b9df1403a065a604c5ac41b99877869fbca..0fe54c8f1dcfe5956d7567b700210639fd995f38 100644
--- a/src/core/iomgr/pollset_posix.c
+++ b/src/core/iomgr/pollset_posix.c
@@ -346,8 +346,9 @@ static int basic_pollset_maybe_work(grpc_pollset *pollset,
   if (gpr_time_cmp(deadline, gpr_inf_future) == 0) {
     timeout = -1;
   } else {
-    timeout = gpr_time_to_millis(gpr_time_sub(deadline, now));
-    if (timeout <= 0) {
+    timeout = gpr_time_to_millis(
+        gpr_time_add(gpr_time_sub(deadline, now), gpr_time_from_micros(500)));
+    if (timeout < 0) {
       return 1;
     }
   }