win32: fix return value of non-blocking write, fixes #162
diff --git a/CHANGES.rst b/CHANGES.rst
index 31912b8..d03cefa 100644
--- a/CHANGES.rst
+++ b/CHANGES.rst
@@ -666,3 +666,6 @@
   port created by socat on OS X
 - [#157] Broken handling of CMSPAR in serialposix.py
 
+Bugfixes (win32):
+
+- [#162] Write in non-blocking mode returns incorrect value on windows
diff --git a/serial/serialwin32.py b/serial/serialwin32.py
index 2927864..2de6a4b 100644
--- a/serial/serialwin32.py
+++ b/serial/serialwin32.py
@@ -320,7 +320,10 @@
                     return n.value  # canceled IO is no error
                 if n.value != len(data):
                     raise writeTimeoutError
-            return n.value
+                return n.value
+            else:
+                # no info on true length provided by OS function in async mode
+                return len(data)
         else:
             return 0