diff --git a/include/snoop.h b/include/snoop.h
index 76d1cf3..6fd85b1 100644
--- a/include/snoop.h
+++ b/include/snoop.h
@@ -6,7 +6,7 @@
 
 #include "module.h"
 
-extern void SNOOP_RegisterDLL(HMODULE,LPCSTR,DWORD);
+extern void SNOOP_RegisterDLL(HMODULE,LPCSTR,DWORD,DWORD);
 extern FARPROC SNOOP_GetProcAddress(HMODULE,LPCSTR,DWORD,FARPROC);
 extern void SNOOP16_RegisterDLL(NE_MODULE*,LPCSTR);
 extern FARPROC16 SNOOP16_GetProcAddress16(HMODULE16,DWORD,FARPROC16);
diff --git a/loader/elf.c b/loader/elf.c
index 47b1128..4729531 100644
--- a/loader/elf.c
+++ b/loader/elf.c
@@ -162,7 +162,7 @@
 
 	hmod = ELF_CreateDummyModule( t, modname );
 
-	SNOOP_RegisterDLL(hmod,libname,STUBSIZE/sizeof(ELF_STDCALL_STUB));
+	SNOOP_RegisterDLL(hmod,libname,0,STUBSIZE/sizeof(ELF_STDCALL_STUB));
 
         wm = PE_CreateModule( hmod, libname, 0, 0, FALSE );
         wm->find_export = ELF_FindExportedFunction;
diff --git a/loader/pe_image.c b/loader/pe_image.c
index a704354..001b3df 100644
--- a/loader/pe_image.c
+++ b/loader/pe_image.c
@@ -115,13 +115,13 @@
   }
 }
 
-/* Look up the specified function or ordinal in the exportlist:
+/* Look up the specified function or ordinal in the export list:
  * If it is a string:
- * 	- look up the name in the Name list. 
+ * 	- look up the name in the name list. 
  *	- look up the ordinal with that index.
  *	- use the ordinal as offset into the functionlist
- * If it is a ordinal:
- *	- use ordinal-pe_export->Base as offset into the functionlist
+ * If it is an ordinal:
+ *	- use ordinal-pe_export->Base as offset into the function list
  */
 static FARPROC PE_FindExportedFunction( 
 	WINE_MODREF *wm,	/* [in] WINE modreference */
@@ -656,7 +656,7 @@
     }
 
     if (pe_export)
-        SNOOP_RegisterDLL( hModule, wm->modname, pe_export->NumberOfFunctions );
+        SNOOP_RegisterDLL( hModule, wm->modname, pe_export->Base, pe_export->NumberOfFunctions );
 
     /* Send DLL load event */
     /* we don't need to send a dll event for the main exe */
diff --git a/relay32/snoop.c b/relay32/snoop.c
index 97c1c5b..56c9fea 100644
--- a/relay32/snoop.c
+++ b/relay32/snoop.c
@@ -59,6 +59,7 @@
 	HMODULE	hmod;
 	SNOOP_FUN	*funs;
 	LPCSTR		name;
+	DWORD		ordbase;
 	DWORD		nrofordinals;
 	struct tagSNOOP_DLL	*next;
 } SNOOP_DLL;
@@ -126,7 +127,7 @@
 }
 
 void
-SNOOP_RegisterDLL(HMODULE hmod,LPCSTR name,DWORD nrofordinals) {
+SNOOP_RegisterDLL(HMODULE hmod,LPCSTR name,DWORD ordbase,DWORD nrofordinals) {
 	SNOOP_DLL	**dll = &(firstdll);
 	char		*s;
 
@@ -139,6 +140,7 @@
 	*dll = (SNOOP_DLL*)HeapAlloc(GetProcessHeap(),HEAP_ZERO_MEMORY,sizeof(SNOOP_DLL));
 	(*dll)->next	= NULL;
 	(*dll)->hmod	= hmod;
+	(*dll)->ordbase = ordbase;
 	(*dll)->nrofordinals = nrofordinals;
 	(*dll)->name	= HEAP_strdupA(GetProcessHeap(),0,name);
 	if ((s=strrchr((*dll)->name,'.')))
@@ -322,7 +324,7 @@
 
 	context->Eip = (DWORD)fun->origfun;
 
-	DPRINTF("%08lx:CALL %s.%ld: %s(",GetCurrentThreadId(),dll->name,ordinal,fun->name);
+	DPRINTF("%08lx:CALL %s.%ld: %s(",GetCurrentThreadId(),dll->name,dll->ordbase+ordinal,fun->name);
 	if (fun->nrofargs>0) {
 		max = fun->nrofargs; if (max>16) max=16;
 		for (i=0;i<max;i++)
@@ -355,7 +357,7 @@
 
 		DPRINTF("%08lx:RET  %s.%ld: %s(",
 		        GetCurrentThreadId(),
-		        ret->dll->name,ret->ordinal,ret->dll->funs[ret->ordinal].name);
+		        ret->dll->name,ret->dll->ordbase+ret->ordinal,ret->dll->funs[ret->ordinal].name);
 		max = ret->dll->funs[ret->ordinal].nrofargs;
 		if (max>16) max=16;
 
@@ -368,7 +370,7 @@
 	} else
 		DPRINTF("%08lx:RET  %s.%ld: %s() retval = %08lx ret=%08lx tid=%08lx\n",
 			GetCurrentThreadId(),
-			ret->dll->name,ret->ordinal,ret->dll->funs[ret->ordinal].name,
+			ret->dll->name,ret->dll->ordbase+ret->ordinal,ret->dll->funs[ret->ordinal].name,
 			context->Eax, (DWORD)ret->origreturn, GetCurrentThreadId());
 	ret->origreturn = NULL; /* mark as empty */
 }
