diff --git a/misc/crtdll.c b/misc/crtdll.c
index fb91ca12af8493b559ae5d722fb628e5327c7e0b..30cf346ee3f58fd0f4c3cb53aa61254c10f2e383 100644
--- a/misc/crtdll.c
+++ b/misc/crtdll.c
@@ -2045,6 +2045,7 @@ LPSTR __cdecl CRTDLL__strdate (LPSTR date)
 {	FIXME (crtdll,"%p stub\n", date);
 	return 0;
 }
+
 /*********************************************************************
  *                  strtime           (CRTDLL.299)
  */
@@ -2052,3 +2053,11 @@ LPSTR __cdecl CRTDLL__strtime (LPSTR date)
 {	FIXME (crtdll,"%p stub\n", date);
 	return 0;
 }
+
+/*********************************************************************
+ *                  _ultoa           (CRTDLL.311)
+ */
+LPSTR __cdecl CRTDLL__ultoa(UINT32 x, LPSTR buf, INT32 buflen) {
+	wsnprintf32A(buf,buflen,"%d",x);
+	return buf;
+}
diff --git a/relay32/crtdll.spec b/relay32/crtdll.spec
index d7b40c200bb2f0f710be0944f2fea3ce6c64bef3..e9d9a23e10a4922fe0dbe3ba51a2a06ea32bee12 100644
--- a/relay32/crtdll.spec
+++ b/relay32/crtdll.spec
@@ -312,7 +312,7 @@ type	win32
 308 stub _toupper
 309 stub _tzname
 310 stub _tzset
-311 stub _ultoa
+311 cdecl _ultoa(long ptr long) CRTDLL__ultoa
 312 stub _ultow
 313 stub _umask
 314 stub _ungetch