diff --git a/libraries/libldap_r/thr_nt.c b/libraries/libldap_r/thr_nt.c
index 620da6b642ab8786fd21796dc2994194d5c1b95c..0f774e5629e0cccdcfcb6a453ea4829ea8cf19bd 100644
--- a/libraries/libldap_r/thr_nt.c
+++ b/libraries/libldap_r/thr_nt.c
@@ -35,9 +35,16 @@ ldap_pvt_thread_create( ldap_pvt_thread_t * thread,
 	void *(*start_routine)( void *),
 	void *arg)
 {
-	*thread = (ldap_pvt_thread_t)_beginthread( (void *) start_routine, 
-						0, arg );
-	 return ( (unsigned long)*thread == -1 ? -1 : 0 );
+	unsigned long tid
+	HANDLE thd;
+
+	thd = _beginthreadex( NULL, 0,
+		(LPTHREAD_START_ROUTINE) start_routine, arg,
+		0, &tid );
+
+	*thread = (ldap_pvt_thread_t) thd;
+
+	 return thd == NULL ? -1 : 0;
 }
 	
 void