diff --git a/esp8266/Makefile b/esp8266/Makefile
index 4710f4cdc24d3686d6f374e08fa9da3be868925a..28dbf08a647bd6d4227ad0b275b211f3e59627f4 100644
--- a/esp8266/Makefile
+++ b/esp8266/Makefile
@@ -108,7 +108,7 @@ LIB_SRC_C = $(addprefix lib/,\
 	libc/string0.c \
 	libm/math.c \
 	libm/fmodf.c \
-	libm/roundf.c \
+	libm/nearbyintf.c \
 	libm/ef_sqrt.c \
 	libm/kf_rem_pio2.c \
 	libm/kf_sin.c \
diff --git a/py/modbuiltins.c b/py/modbuiltins.c
index 13312d22964ae11c6f4aad1ff2ae2c2d6e537f86..541e733e5a95adcce51c31847e84ed3275b5be19 100644
--- a/py/modbuiltins.c
+++ b/py/modbuiltins.c
@@ -473,18 +473,11 @@ STATIC mp_obj_t mp_builtin_round(size_t n_args, const mp_obj_t *args) {
         mp_float_t val = mp_obj_get_float(o_in);
         mp_float_t mult = MICROPY_FLOAT_C_FUN(pow)(10, num_dig);
         // TODO may lead to overflow
-        mp_float_t rounded = MICROPY_FLOAT_C_FUN(round)(val * mult) / mult;
+        mp_float_t rounded = MICROPY_FLOAT_C_FUN(nearbyint)(val * mult) / mult;
         return mp_obj_new_float(rounded);
     }
     mp_float_t val = mp_obj_get_float(o_in);
-    mp_float_t rounded = MICROPY_FLOAT_C_FUN(round)(val);
-    mp_int_t r = rounded;
-    // make rounded value even if it was halfway between ints
-    if (val - rounded == 0.5) {
-        r = (r + 1) & (~1);
-    } else if (val - rounded == -0.5) {
-        r &= ~1;
-    }
+    mp_float_t rounded = MICROPY_FLOAT_C_FUN(nearbyint)(val);
 #else
     mp_int_t r = mp_obj_get_int(o_in);
 #endif
diff --git a/qemu-arm/Makefile b/qemu-arm/Makefile
index e8f5b359efc1008a69c1d3501c63be2ec56328c8..d4bbe8d583fcc92011644448134b07b618d5e548 100644
--- a/qemu-arm/Makefile
+++ b/qemu-arm/Makefile
@@ -47,7 +47,7 @@ SRC_TEST_C = \
 LIB_SRC_C = $(addprefix lib/,\
 	libm/math.c \
 	libm/fmodf.c \
-	libm/roundf.c \
+	libm/nearbyintf.c \
 	libm/ef_sqrt.c \
 	libm/kf_rem_pio2.c \
 	libm/kf_sin.c \
diff --git a/stmhal/Makefile b/stmhal/Makefile
index 3eef6ffb23f33efcaab2045a5a0e127214558fe4..51aa07f3c938cea3859073093d987f4baa0f46c4 100644
--- a/stmhal/Makefile
+++ b/stmhal/Makefile
@@ -86,7 +86,7 @@ SRC_LIB = $(addprefix lib/,\
 	libm/atanf.c \
 	libm/atan2f.c \
 	libm/fmodf.c \
-	libm/roundf.c \
+	libm/nearbyintf.c \
 	libm/log1pf.c \
 	libm/acoshf.c \
 	libm/asinhf.c \