diff --git a/sc/source/filter/oox/formulabase.cxx b/sc/source/filter/oox/formulabase.cxx
index 947b785..11d2419 100644
--- a/sc/source/filter/oox/formulabase.cxx
+++ b/sc/source/filter/oox/formulabase.cxx
@@ -817,6 +817,14 @@ static const FunctionData saFuncTableOdf[] =
     { "CHISQINV",               0,                      NOID,   NOID,   2,  2,  V, { VR }, FUNCFLAG_MACROCALLODF }
 };
 
+/** Functions defined by calc, but not in OpenFormula nor supported by Excel. */
+static const FunctionData saFuncTableOOoLO[] =
+{
+    { "ORG.OPENOFFICE.WEEKS",   0,                       NOID,   NOID,   3,  3,  V, { VR }, FUNCFLAG_MACROCALLODF | FUNCFLAG_EXPORTONLY },
+    { "MONTHS",                 0,                       NOID,   NOID,   3,  3,  V, { VR }, FUNCFLAG_MACROCALLODF },
+    { "ORG.OPENOFFICE.YEARS",   0,                       NOID,   NOID,   3,  3,  V, { VR }, FUNCFLAG_MACROCALLODF },
+};
+
 // ----------------------------------------------------------------------------
 
 const sal_Unicode API_TOKEN_OPEN            = '(';
@@ -937,6 +945,7 @@ FunctionProviderImpl::FunctionProviderImpl( FilterType eFilter, BiffType eBiff,
     initFuncs( saFuncTableOox, STATIC_ARRAY_END( saFuncTableOox ), nMaxParam, bImportFilter, eFilter );
     initFuncs( saFuncTable2013, STATIC_ARRAY_END( saFuncTable2013 ), nMaxParam, bImportFilter, eFilter );
     initFuncs( saFuncTableOdf, STATIC_ARRAY_END( saFuncTableOdf ), nMaxParam, bImportFilter, eFilter );
+    initFuncs( saFuncTableOOoLO, STATIC_ARRAY_END( saFuncTableOOoLO ), nMaxParam, bImportFilter, eFilter );
 }
 
 void FunctionProviderImpl::initFunc( const FunctionData& rFuncData, sal_uInt8 nMaxParam )
@@ -1152,11 +1161,15 @@ OpCodeProviderImpl::OpCodeProviderImpl( const FunctionInfoVector& rFuncInfos,
             initOpCode( OPCODE_LIST,          aTokenMap, '~',  ','  ) &&
             initOpCode( OPCODE_RANGE,         aTokenMap, ':',  ':'  ) &&
             // functions
-            fillFuncTokenMaps( aTokenMap, aExtFuncTokenMap, aEntrySeq, xMapper ) &&
-            initFuncOpCodes( aTokenMap, aExtFuncTokenMap, rFuncInfos ) &&
+            fillFuncTokenMaps( aTokenMap, aExtFuncTokenMap, aEntrySeq, xMapper );
+        OSL_ENSURE( bIsValid, "OpCodeProviderImpl::OpCodeProviderImpl - opcodes not initialized  - aExtFuncTokenMap,aEntrySeq,XMapper" );
+        bIsValid =
+            initFuncOpCodes( aTokenMap, aExtFuncTokenMap, rFuncInfos );
+        OSL_ENSURE( bIsValid, "OpCodeProviderImpl::OpCodeProviderImpl - opcodes not initialized - aExtFuncTokeMap,rFuncInfos" );
+        bIsValid =
             initOpCode( OPCODE_DDE,           aTokenMap, "DDE", 0 );
 
-        OSL_ENSURE( bIsValid, "OpCodeProviderImpl::OpCodeProviderImpl - opcodes not initialized" );
+        OSL_ENSURE( bIsValid, "OpCodeProviderImpl::OpCodeProviderImpl - opcodes not initialized - DDE" );
         (void)bIsValid;
 
         // OPCODE_PLUS_SIGN and OPCODE_ADD should be equal, otherwise "+" has to be passed above
@@ -1322,11 +1335,16 @@ bool OpCodeProviderImpl::initFuncOpCode( FunctionInfo& orFuncInfo, const ApiToke
 bool OpCodeProviderImpl::initFuncOpCodes( const ApiTokenMap& rIntFuncTokenMap, const ApiTokenMap& rExtFuncTokenMap, const FunctionInfoVector& rFuncInfos )
 {
     bool bIsValid = true;
+    int i = 0;
     for( FunctionInfoVector::const_iterator aIt = rFuncInfos.begin(), aEnd = rFuncInfos.end(); aIt != aEnd; ++aIt )
     {
         FunctionInfoRef xFuncInfo = *aIt;
         // set API opcode from ODF function name
-        bIsValid &= initFuncOpCode( *xFuncInfo, xFuncInfo->mbExternal ? rExtFuncTokenMap : rIntFuncTokenMap );
+        bool bIsValidi = initFuncOpCode( *xFuncInfo, xFuncInfo->mbExternal ? rExtFuncTokenMap : rIntFuncTokenMap );
+        bIsValid &= bIsValidi;
+        i++;
+        if ( !bIsValidi )
+          SAL_WARN( "OpCodeProviderImpl::initFuncOpCodes" , "bIsValid false - i = " << i );
         // insert the function info into the maps
         if( (xFuncInfo->mnApiOpCode != OPCODE_NONAME) && (xFuncInfo->mnApiOpCode != OPCODE_BAD) )
         {
