diff --git a/dlls/oleaut32/typelib.c b/dlls/oleaut32/typelib.c
index 295cac3ddc1a33a66700d21d7e59dfcb9e214364..725bf2f739d7b3f67274cb3f5a4713d493300679 100644
--- a/dlls/oleaut32/typelib.c
+++ b/dlls/oleaut32/typelib.c
@@ -2310,6 +2310,8 @@ MSFT_DoFuncs(TLBContext*     pcx,
 
         /* size without argument data */
         optional = reclength - pFuncRec->nrargs*sizeof(MSFT_ParameterInfo);
+        if (pFuncRec->FKCCIC & 0x1000)
+            optional -= pFuncRec->nrargs * sizeof(INT);
 
         if (optional > FIELD_OFFSET(MSFT_FuncRecord, HelpContext))
             ptfd->helpcontext = pFuncRec->HelpContext;