diff --git a/src/core/client_config/subchannel.c b/src/core/client_config/subchannel.c
index 4d75994fdbf42aacbc10d82058a4c76d18f489b7..17773bd2f488f37dbc1c2a7f6dd81b043884caf4 100644
--- a/src/core/client_config/subchannel.c
+++ b/src/core/client_config/subchannel.c
@@ -132,7 +132,7 @@ struct grpc_subchannel {
   /** our alarm */
   grpc_alarm alarm;
   /** current random value */
-  gpr_int32 random;
+  gpr_uint32 random;
 };
 
 struct grpc_subchannel_call {
@@ -272,8 +272,8 @@ void grpc_subchannel_del_interested_party(grpc_subchannel *c,
   grpc_pollset_set_del_pollset(c->pollset_set, pollset);
 }
 
-static gpr_int32 random_seed() {
-  return gpr_time_to_millis(gpr_now(GPR_CLOCK_MONOTONIC));
+static gpr_uint32 random_seed() {
+  return (gpr_uint32)(gpr_time_to_millis(gpr_now(GPR_CLOCK_MONOTONIC)));
 }
 
 grpc_subchannel *grpc_subchannel_create(grpc_connector *connector,