diff --git a/loader/.cvsignore b/loader/.cvsignore
index f3c7a7c..c2b6613 100644
--- a/loader/.cvsignore
+++ b/loader/.cvsignore
@@ -1 +1,2 @@
 Makefile
+task.glue.c
diff --git a/loader/Makefile.in b/loader/Makefile.in
index 580d1e6..448f984 100644
--- a/loader/Makefile.in
+++ b/loader/Makefile.in
@@ -18,6 +18,8 @@
 	signal.c \
 	task.c
 
+GLUE = task.c
+
 all: $(MODULE).o
 
 @MAKE_RULES@
diff --git a/loader/ne/module.c b/loader/ne/module.c
index 7dc258a..fee2a06 100644
--- a/loader/ne/module.c
+++ b/loader/ne/module.c
@@ -1290,15 +1290,10 @@
     {
         if (pModule->flags & NE_FFLAGS_LIBMODULE)
         {
-            TDB *pTask = (TDB *)GlobalLock16( GetCurrentTask() );
             MODULE_CallWEP( hModule );
 
             /* Free the objects owned by the DLL module */
-
-            if (pTask && pTask->userhandler)
-                pTask->userhandler( hModule, USIG16_DLL_UNLOAD, 0,
-                                    pTask->hInstance, pTask->hQueue );
-
+            TASK_CallTaskSignalProc( USIG16_DLL_UNLOAD, hModule );
             PROCESS_CallUserSignalProc( USIG_DLL_UNLOAD_WIN16, hModule );
         }
         else
diff --git a/loader/ne/segment.c b/loader/ne/segment.c
index f800cac..6983438 100644
--- a/loader/ne/segment.c
+++ b/loader/ne/segment.c
@@ -613,9 +613,7 @@
         (pModule->flags & NE_FFLAGS_WIN32)) return TRUE; /*not a library*/
 
     /* Call USER signal handler for Win3.1 compatibility. */
-    if (pTask && pTask->userhandler)
-        pTask->userhandler( pModule->self, USIG16_DLL_LOAD, 0, 
-                            pTask->hInstance, pTask->hQueue );
+    TASK_CallTaskSignalProc( USIG16_DLL_LOAD, pModule->self );
 
     if (!pModule->cs) return TRUE;  /* no initialization code */
 
diff --git a/loader/task.c b/loader/task.c
index e3697e7..5ae567c 100644
--- a/loader/task.c
+++ b/loader/task.c
@@ -467,10 +467,7 @@
 
     /* Perform USER cleanup */
 
-    if (pTask->userhandler)
-        pTask->userhandler( hTask, USIG16_TERMINATION, 0,
-                            pTask->hInstance, pTask->hQueue );
-
+    TASK_CallTaskSignalProc( USIG16_TERMINATION, hTask );
     PROCESS_CallUserSignalProc( USIG_PROCESS_EXIT, 0 );
     PROCESS_CallUserSignalProc( USIG_THREAD_EXIT, 0 );     /* FIXME */
     PROCESS_CallUserSignalProc( USIG_PROCESS_DESTROY, 0 );
@@ -1447,8 +1444,6 @@
 
 /***********************************************************************
  *           SetTaskSignalProc   (KERNEL.38)
- *
- * Real 16-bit interface is provided by the THUNK_SetTaskSignalProc.
  */
 FARPROC16 WINAPI SetTaskSignalProc( HTASK16 hTask, FARPROC16 proc )
 {
@@ -1457,11 +1452,26 @@
 
     if (!hTask) hTask = GetCurrentTask();
     if (!(pTask = (TDB *)GlobalLock16( hTask ))) return NULL;
-    oldProc = (FARPROC16)pTask->userhandler;
-    pTask->userhandler = (USERSIGNALPROC)proc;
+    oldProc = pTask->userhandler;
+    pTask->userhandler = proc;
     return oldProc;
 }
 
+/***********************************************************************
+ *           TASK_CallTaskSignalProc
+ */
+/* ### start build ### */
+extern WORD CALLBACK TASK_CallTo16_word_wwwww(FARPROC16,WORD,WORD,WORD,WORD,WORD);
+/* ### stop build ### */
+void TASK_CallTaskSignalProc( UINT16 uCode, HANDLE16 hTaskOrModule )
+{
+    TDB *pTask = (TDB *)GlobalLock16( GetCurrentTask() );
+    if ( !pTask || !pTask->userhandler ) return;
+
+    TASK_CallTo16_word_wwwww( pTask->userhandler, 
+                              hTaskOrModule, uCode, 0, 
+                              pTask->hInstance, pTask->hQueue );
+}
 
 /***********************************************************************
  *           SetSigHandler   (KERNEL.140)
