diff --git a/extmod/modlwip.c b/extmod/modlwip.c
index 820c15b72e2a3c79254fa5ad415e99857f370b95..e3fc5068ddf3fd80ec50c24a81c63f450fe92c76 100644
--- a/extmod/modlwip.c
+++ b/extmod/modlwip.c
@@ -396,7 +396,8 @@ STATIC mp_uint_t lwip_tcp_receive(lwip_socket_obj_t *socket, byte *buf, mp_uint_
                 return 0;
             }
         } else if (socket->state != STATE_CONNECTED) {
-            *_errno = -socket->state;
+            assert(socket->state < 0);
+            *_errno = error_lookup_table[-socket->state];
             return -1;
         }
     }