diff --git a/libc/bionic/wctype.cpp b/libc/bionic/wctype.cpp
index b37f17b..71caa76 100644
--- a/libc/bionic/wctype.cpp
+++ b/libc/bionic/wctype.cpp
@@ -150,7 +150,6 @@
 wctrans_t wctrans(const char* name) {
   if (strcmp(name, "tolower") == 0) return wctrans_tolower;
   if (strcmp(name, "toupper") == 0) return wctrans_toupper;
-  errno = EINVAL;
   return nullptr;
 }
 
@@ -162,7 +161,7 @@
   if (t == wctrans_tolower) return towlower(c);
   if (t == wctrans_toupper) return towupper(c);
   errno = EINVAL;
-  return c;
+  return 0;
 }
 
 wint_t towctrans_l(wint_t c, wctrans_t t, locale_t) {
diff --git a/tests/wctype_test.cpp b/tests/wctype_test.cpp
index f4b7a8f..38d26ca 100644
--- a/tests/wctype_test.cpp
+++ b/tests/wctype_test.cpp
@@ -226,64 +226,34 @@
   EXPECT_EQ(0, iswctype_l(WEOF, wctype_l("alnum", l.l), l.l));
 }
 
-TEST(wctype, wctrans) {
+TEST(wctype, towctrans) {
   EXPECT_TRUE(wctrans("tolower") != nullptr);
   EXPECT_TRUE(wctrans("toupper") != nullptr);
 
-  errno = 0;
   EXPECT_TRUE(wctrans("monkeys") == nullptr);
-  #if defined(__BIONIC__)
-  // Android/FreeBSD/iOS set errno, but musl/glibc don't.
-  EXPECT_ERRNO(EINVAL);
-  #endif
-}
-
-TEST(wctype, wctrans_l) {
-  UtfLocale l;
-  EXPECT_TRUE(wctrans_l("tolower", l.l) != nullptr);
-  EXPECT_TRUE(wctrans_l("toupper", l.l) != nullptr);
-
-  errno = 0;
-  EXPECT_TRUE(wctrans_l("monkeys", l.l) == nullptr);
-  #if defined(__BIONIC__)
-  // Android/FreeBSD/iOS set errno, but musl/glibc don't.
-  EXPECT_ERRNO(EINVAL);
-  #endif
-}
-
-TEST(wctype, towctrans) {
-  wctrans_t lower = wctrans("tolower");
-  EXPECT_EQ(wint_t('a'), towctrans(L'A', lower));
-  EXPECT_EQ(WEOF, towctrans(WEOF, lower));
-
-  wctrans_t upper = wctrans("toupper");
-  EXPECT_EQ(wint_t('A'), towctrans(L'a', upper));
-  EXPECT_EQ(WEOF, towctrans(WEOF, upper));
-
-  wctrans_t invalid = wctrans("monkeys");
-  errno = 0;
-  EXPECT_EQ(wint_t('a'), towctrans(L'a', invalid));
-  #if defined(__BIONIC__)
-  // Android/FreeBSD/iOS set errno, but musl/glibc don't.
-  EXPECT_ERRNO(EINVAL);
-  #endif
 }
 
 TEST(wctype, towctrans_l) {
   UtfLocale l;
-  wctrans_t lower = wctrans_l("tolower", l.l);
-  EXPECT_EQ(wint_t('a'), towctrans_l(L'A', lower, l.l));
-  EXPECT_EQ(WEOF, towctrans_l(WEOF, lower, l.l));
+  EXPECT_TRUE(wctrans_l("tolower", l.l) != nullptr);
+  EXPECT_TRUE(wctrans_l("toupper", l.l) != nullptr);
 
-  wctrans_t upper = wctrans_l("toupper", l.l);
-  EXPECT_EQ(wint_t('A'), towctrans_l(L'a', upper, l.l));
-  EXPECT_EQ(WEOF, towctrans_l(WEOF, upper, l.l));
+  EXPECT_TRUE(wctrans_l("monkeys", l.l) == nullptr);
+}
 
-  wctrans_t invalid = wctrans_l("monkeys", l.l);
-  errno = 0;
-  EXPECT_EQ(wint_t('a'), towctrans_l(L'a', invalid, l.l));
-  #if defined(__BIONIC__)
-  // Android/FreeBSD/iOS set errno, but musl/glibc don't.
-  EXPECT_ERRNO(EINVAL);
-  #endif
+TEST(wctype, wctrans) {
+  EXPECT_EQ(wint_t('a'), towctrans(L'A', wctrans("tolower")));
+  EXPECT_EQ(WEOF, towctrans(WEOF, wctrans("tolower")));
+
+  EXPECT_EQ(wint_t('A'), towctrans(L'a', wctrans("toupper")));
+  EXPECT_EQ(WEOF, towctrans(WEOF, wctrans("toupper")));
+}
+
+TEST(wctype, wctrans_l) {
+  UtfLocale l;
+  EXPECT_EQ(wint_t('a'), towctrans_l(L'A', wctrans_l("tolower", l.l), l.l));
+  EXPECT_EQ(WEOF, towctrans_l(WEOF, wctrans_l("tolower", l.l), l.l));
+
+  EXPECT_EQ(wint_t('A'), towctrans_l(L'a', wctrans_l("toupper", l.l), l.l));
+  EXPECT_EQ(WEOF, towctrans_l(WEOF, wctrans_l("toupper", l.l), l.l));
 }
