diff --git a/Makefile.in b/Makefile.in
index 3feb30c533511da938ece9d9f01831e0f499f859..6c0b3a30e581fc2dd873e6d09f0a125691e78759 100644
--- a/Makefile.in
+++ b/Makefile.in
@@ -92,7 +92,6 @@ ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
 am__aclocal_m4_deps = $(top_srcdir)/m4/acx_fc_line_length.m4 \
 	$(top_srcdir)/m4/acx_fc_module.m4 \
 	$(top_srcdir)/m4/acx_fc_pp.m4 $(top_srcdir)/m4/acx_lang_lib.m4 \
-	$(top_srcdir)/m4/acx_lang_openmp.m4 \
 	$(top_srcdir)/m4/acx_lang_package.m4 \
 	$(top_srcdir)/m4/asx_common.m4 \
 	$(top_srcdir)/m4/ax_prog_doxygen.m4 \
@@ -299,7 +298,6 @@ NM = @NM@
 NMEDIT = @NMEDIT@
 OBJDUMP = @OBJDUMP@
 OBJEXT = @OBJEXT@
-OPENMP_FCFLAG = @OPENMP_FCFLAG@
 OTOOL = @OTOOL@
 OTOOL64 = @OTOOL64@
 PACKAGE = @PACKAGE@
diff --git a/aclocal.m4 b/aclocal.m4
index ba2d4f7311961d1aafd0c7e4ec9e34a02ff310d2..5e4d480b4806e56451f2c76e661680f36cbeef7f 100644
--- a/aclocal.m4
+++ b/aclocal.m4
@@ -1549,7 +1549,6 @@ m4_include([m4/acx_fc_line_length.m4])
 m4_include([m4/acx_fc_module.m4])
 m4_include([m4/acx_fc_pp.m4])
 m4_include([m4/acx_lang_lib.m4])
-m4_include([m4/acx_lang_openmp.m4])
 m4_include([m4/acx_lang_package.m4])
 m4_include([m4/asx_common.m4])
 m4_include([m4/ax_prog_doxygen.m4])
diff --git a/configure b/configure
index a1f068f6cd1b33f1963a978724dc67f35668cc67..3257c2727f52565f3f9d94d2828c476df9518118 100755
--- a/configure
+++ b/configure
@@ -719,9 +719,6 @@ ENABLE_FORTRAN_HL_FALSE
 ENABLE_FORTRAN_HL_TRUE
 ENABLE_EXAMPLES_FALSE
 ENABLE_EXAMPLES_TRUE
-ENABLE_OPENMP_FALSE
-ENABLE_OPENMP_TRUE
-OPENMP_FCFLAG
 pkgpyexecdir
 pyexecdir
 pkgpythondir
@@ -876,7 +873,6 @@ enable_libtool_lock
 with_python_sys_prefix
 with_python_prefix
 with_python_exec_prefix
-enable_openmp
 enable_examples
 enable_fortran_hl
 enable_check
@@ -1550,8 +1546,6 @@ Optional Features:
   --disable-dependency-tracking
                           speeds up one-time build
   --disable-libtool-lock  avoid locking (might break parallel builds)
-  --enable-openmp         ensure compatibility with OpenMP applications
-                          [default=no]
   --enable-examples       build examples [default=yes]
   --enable-fortran-hl     build Fortran high-level interface [default=yes]
   --enable-check          enable unit testing with check library
@@ -17918,93 +17912,6 @@ then :
 fi
 
 
-# Check whether --enable-openmp was given.
-if test ${enable_openmp+y}
-then :
-  enableval=$enable_openmp;
-else $as_nop
-  enable_openmp=no
-fi
-
-
-OPENMP_FCFLAG=''
-
-if test "x$enable_openmp" = xyes
-then :
-  ac_ext=${ac_fc_srcext-f}
-ac_compile='$FC -c $FCFLAGS $ac_fcflags_srcext conftest.$ac_ext >&5'
-ac_link='$FC -o conftest$ac_exeext $FCFLAGS $LDFLAGS $ac_fcflags_srcext conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_fc_compiler_gnu
-
-      { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for Fortran compiler flag needed to enable OpenMP support" >&5
-printf %s "checking for Fortran compiler flag needed to enable OpenMP support... " >&6; }
-   if test ${acx_cv_fc_openmp_flag+y}
-then :
-  printf %s "(cached) " >&6
-else $as_nop
-  acx_cv_fc_openmp_flag=unknown
-      acx_save_FCFLAGS=$FCFLAGS
-      cat > conftest.$ac_ext <<_ACEOF
-#ifndef _OPENMP
-      choke me
-#endif
-
-      program main
-      implicit none
-!$    integer tid
-      tid = 42
-      call omp_set_num_threads(2)
-      end
-
-_ACEOF
-      for acx_lang_openmp_flag in '' -qopenmp -openmp -fopenmp -homp -mp; do
-        FCFLAGS="${acx_save_FCFLAGS} $acx_lang_openmp_flag"
-        if ac_fn_fc_try_link "$LINENO"
-then :
-  acx_cv_fc_openmp_flag=$acx_lang_openmp_flag
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.beam \
-    conftest$ac_exeext
-        test "x$acx_cv_fc_openmp_flag" != xunknown && break
-      done
-      rm -f conftest.$ac_ext
-      FCFLAGS=$acx_save_FCFLAGS
-fi
-
-   if test -n "$acx_cv_fc_openmp_flag"
-then :
-  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $acx_cv_fc_openmp_flag" >&5
-printf "%s\n" "$acx_cv_fc_openmp_flag" >&6; }
-else $as_nop
-  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: none needed" >&5
-printf "%s\n" "none needed" >&6; }
-fi
-   if test "x$acx_cv_fc_openmp_flag" = xunknown
-then :
-  { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
-printf "%s\n" "$as_me: error: in \`$ac_pwd':" >&2;}
-as_fn_error $? "unable to detect Fortran compiler flag needed to enable OpenMP support
-See \`config.log' for more details" "$LINENO" 5; }
-else $as_nop
-  OPENMP_FCFLAG=$acx_cv_fc_openmp_flag
-fi
-
-   ac_ext=c
-ac_cpp='$CPP $CPPFLAGS'
-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_c_compiler_gnu
-
-fi
- if test x"$enable_openmp" = xyes; then
-  ENABLE_OPENMP_TRUE=
-  ENABLE_OPENMP_FALSE='#'
-else
-  ENABLE_OPENMP_TRUE='#'
-  ENABLE_OPENMP_FALSE=
-fi
-
-
 # Check whether --enable-examples was given.
 if test ${enable_examples+y}
 then :
@@ -20504,10 +20411,6 @@ if test -z "${FCMODUC_TRUE}" && test -z "${FCMODUC_FALSE}"; then
   as_fn_error $? "conditional \"FCMODUC\" was never defined.
 Usually this means the macro was only invoked conditionally." "$LINENO" 5
 fi
-if test -z "${ENABLE_OPENMP_TRUE}" && test -z "${ENABLE_OPENMP_FALSE}"; then
-  as_fn_error $? "conditional \"ENABLE_OPENMP\" was never defined.
-Usually this means the macro was only invoked conditionally." "$LINENO" 5
-fi
 if test -z "${ENABLE_EXAMPLES_TRUE}" && test -z "${ENABLE_EXAMPLES_FALSE}"; then
   as_fn_error $? "conditional \"ENABLE_EXAMPLES\" was never defined.
 Usually this means the macro was only invoked conditionally." "$LINENO" 5
diff --git a/configure.ac b/configure.ac
index 7d976fabb9f62d23a4371ff67beebc89892f69ce..f42ce77dd920d2ffc00c2777561e14ae40aad42b 100644
--- a/configure.ac
+++ b/configure.ac
@@ -64,18 +64,6 @@ AM_PATH_PYTHON([2.6])
 
 AC_SEARCH_LIBS([roundf], [m])
 
-AC_ARG_ENABLE([openmp],
-  [AS_HELP_STRING([--enable-openmp],
-     [ensure compatibility with OpenMP applications @<:@default=no@:>@])], [],
-  [enable_openmp=no])
-
-AC_SUBST([OPENMP_FCFLAG], [''])
-AS_VAR_IF([enable_openmp], [yes],
-  [AC_LANG_PUSH([Fortran])
-   ACX_LANG_OPENMP_FLAG([OPENMP_FCFLAG=$acx_cv_fc_openmp_flag])
-   AC_LANG_POP([Fortran])])
-AM_CONDITIONAL([ENABLE_OPENMP], [test x"$enable_openmp" = xyes])
-
 AC_ARG_ENABLE([examples],
   [AS_HELP_STRING([--enable-examples],
      [build examples @<:@default=yes@:>@])], [],
diff --git a/doc/Makefile.in b/doc/Makefile.in
index 08b19f684f43ccb2b52ff6eab30a937bc7855ca1..058e2e7737fde2d6b314d956f06e7c721a8f4330 100644
--- a/doc/Makefile.in
+++ b/doc/Makefile.in
@@ -92,7 +92,6 @@ ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
 am__aclocal_m4_deps = $(top_srcdir)/m4/acx_fc_line_length.m4 \
 	$(top_srcdir)/m4/acx_fc_module.m4 \
 	$(top_srcdir)/m4/acx_fc_pp.m4 $(top_srcdir)/m4/acx_lang_lib.m4 \
-	$(top_srcdir)/m4/acx_lang_openmp.m4 \
 	$(top_srcdir)/m4/acx_lang_package.m4 \
 	$(top_srcdir)/m4/asx_common.m4 \
 	$(top_srcdir)/m4/ax_prog_doxygen.m4 \
@@ -212,7 +211,6 @@ NM = @NM@
 NMEDIT = @NMEDIT@
 OBJDUMP = @OBJDUMP@
 OBJEXT = @OBJEXT@
-OPENMP_FCFLAG = @OPENMP_FCFLAG@
 OTOOL = @OTOOL@
 OTOOL64 = @OTOOL64@
 PACKAGE = @PACKAGE@
diff --git a/examples/Makefile.in b/examples/Makefile.in
index dee28c245d2d7a7b806aced115d57acf9b7fe243..356284ca0080cf5dc66080ccf2723dbc69803e9e 100644
--- a/examples/Makefile.in
+++ b/examples/Makefile.in
@@ -109,7 +109,6 @@ ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
 am__aclocal_m4_deps = $(top_srcdir)/m4/acx_fc_line_length.m4 \
 	$(top_srcdir)/m4/acx_fc_module.m4 \
 	$(top_srcdir)/m4/acx_fc_pp.m4 $(top_srcdir)/m4/acx_lang_lib.m4 \
-	$(top_srcdir)/m4/acx_lang_openmp.m4 \
 	$(top_srcdir)/m4/acx_lang_package.m4 \
 	$(top_srcdir)/m4/asx_common.m4 \
 	$(top_srcdir)/m4/ax_prog_doxygen.m4 \
@@ -380,7 +379,6 @@ NM = @NM@
 NMEDIT = @NMEDIT@
 OBJDUMP = @OBJDUMP@
 OBJEXT = @OBJEXT@
-OPENMP_FCFLAG = @OPENMP_FCFLAG@
 OTOOL = @OTOOL@
 OTOOL64 = @OTOOL64@
 PACKAGE = @PACKAGE@
diff --git a/include/Makefile.in b/include/Makefile.in
index 3a329fd1d92edfc120c35986cf449d209eeac7dc..79fc7fc2e1d6b55196e87ec50bf196816831ddfd 100644
--- a/include/Makefile.in
+++ b/include/Makefile.in
@@ -93,7 +93,6 @@ ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
 am__aclocal_m4_deps = $(top_srcdir)/m4/acx_fc_line_length.m4 \
 	$(top_srcdir)/m4/acx_fc_module.m4 \
 	$(top_srcdir)/m4/acx_fc_pp.m4 $(top_srcdir)/m4/acx_lang_lib.m4 \
-	$(top_srcdir)/m4/acx_lang_openmp.m4 \
 	$(top_srcdir)/m4/acx_lang_package.m4 \
 	$(top_srcdir)/m4/asx_common.m4 \
 	$(top_srcdir)/m4/ax_prog_doxygen.m4 \
@@ -259,7 +258,6 @@ NM = @NM@
 NMEDIT = @NMEDIT@
 OBJDUMP = @OBJDUMP@
 OBJEXT = @OBJEXT@
-OPENMP_FCFLAG = @OPENMP_FCFLAG@
 OTOOL = @OTOOL@
 OTOOL64 = @OTOOL64@
 PACKAGE = @PACKAGE@
diff --git a/m4/acx_lang_openmp.m4 b/m4/acx_lang_openmp.m4
deleted file mode 100644
index d90ee736fbd192c4f161db26b8f48c2ea318f570..0000000000000000000000000000000000000000
--- a/m4/acx_lang_openmp.m4
+++ /dev/null
@@ -1,112 +0,0 @@
-# Copyright (c) 2018-2024, MPI-M
-#
-# Author: Sergey Kosukhin <sergey.kosukhin@mpimet.mpg.de>
-#
-# SPDX-License-Identifier: BSD-3-Clause
-#
-# Redistribution and use in source and binary forms, with or without
-# modification, are permitted provided that the following conditions are met:
-#
-# 1. Redistributions of source code must retain the above copyright notice,
-#    this list of conditions and the following disclaimer.
-# 2. Redistributions in binary form must reproduce the above copyright
-#    notice, this list of conditions and the following disclaimer in the
-#    documentation and/or other materials provided with the distribution.
-# 3. Neither the name of the copyright holder nor the names of its
-#    contributors may be used to endorse or promote products derived from
-#    this software without specific prior written permission.
-#
-# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-# AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-# ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-# LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-# CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-# SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-# INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-# CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-# ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-# POSSIBILITY OF SUCH DAMAGE.
-
-# ACX_LANG_OPENMP_FLAG([ACTION-IF-SUCCESS],
-#                      [ACTION-IF-FAILURE = FAILURE])
-# -----------------------------------------------------------------------------
-# Finds the compiler flag needed to enable OpenMP support. The result is either
-# "unknown", or the actual compiler flag required to enable OpenMP support,
-# which may be an empty string.
-#
-# If successful, runs ACTION-IF-SUCCESS, otherwise runs ACTION-IF-FAILURE
-# (defaults to failing with an error message).
-#
-# The flag is cached in the acx_cv_[]_AC_LANG_ABBREV[]_openmp_flag variable.
-#
-# Upon successful run, you can check for the version of the standard supported
-# by the compiler by expanding:
-#   AS_VAR_APPEND([_AC_LANG_PREFIX[]FLAGS],
-#     [" $acx_cv_[]_AC_LANG_ABBREV[]_openmp_flag"])
-#   ACX_LANG_MACRO_CHECK_VALUE([_OPENMP])
-# and checking for the value of the
-# acx_cv_[]_AC_LANG_ABBREV[]_macro__OPENMP_value shell variable. The possible
-# (successful) values of the variable are dates, which map to the versions of
-# the standard in the following way:
-#   202111 5.2
-#   202011 5.1
-#   201811 5.0
-#   201511 4.5
-#   201307 4.0
-#   201107 3.1
-#   200805 3.0
-#   200505 2.5
-#   200203 C/C++ version 2.0
-#   200011 Fortran version 2.0
-#   199911 Fortran version 1.1
-#   199810 C/C++ version 1.0
-#   199710 Fortran version 1.0
-#
-AC_DEFUN([ACX_LANG_OPENMP_FLAG],
-  [m4_pushdef([acx_cache_var], [acx_cv_[]_AC_LANG_ABBREV[]_openmp_flag])dnl
-   AC_MSG_CHECKING([for _AC_LANG compiler flag needed to enable OpenMP dnl
-support])
-   AC_CACHE_VAL([acx_cache_var],
-     [acx_cache_var=unknown
-      acx_save_[]_AC_LANG_PREFIX[]FLAGS=$[]_AC_LANG_PREFIX[]FLAGS
-      AC_LANG_CONFTEST([_ACX_LANG_OPENMP])
-      for acx_lang_openmp_flag in '' -qopenmp -openmp -fopenmp -homp -mp; do
-        _AC_LANG_PREFIX[]FLAGS="${acx_save_[]_AC_LANG_PREFIX[]FLAGS} dnl
-$acx_lang_openmp_flag"
-        AC_LINK_IFELSE([], [acx_cache_var=$acx_lang_openmp_flag])
-        test "x$acx_cache_var" != xunknown && break
-      done
-      rm -f conftest.$ac_ext
-      _AC_LANG_PREFIX[]FLAGS=$acx_save_[]_AC_LANG_PREFIX[]FLAGS])
-   AS_IF([test -n "$acx_cache_var"],
-     [AC_MSG_RESULT([$acx_cache_var])],
-     [AC_MSG_RESULT([none needed])])
-   AS_VAR_IF([acx_cache_var], [unknown], [m4_default([$2],
-     [AC_MSG_FAILURE([unable to detect _AC_LANG compiler flag needed to dnl
-enable OpenMP support])])], [$1])
-   m4_popdef([acx_cache_var])])
-
-# _ACX_LANG_OPENMP()
-# -----------------------------------------------------------------------------
-# Expands into the source code of a program in the current language that is
-# compiled successfully only when OpenMP support is enabled for the current
-# compiler. By default, expands to _AC_LANG_OPENMP.
-#
-m4_define([_ACX_LANG_OPENMP],
-  [m4_ifdef([$0(]_AC_LANG[)],
-     [m4_indir([$0(]_AC_LANG[)], $@)],
-     [_AC_LANG_OPENMP])])])
-
-# _ACX_LANG_OPENMP(Fortran)()
-# -----------------------------------------------------------------------------
-# Implementation of _ACX_LANG_OPENMP for Fortran language. In addition to the
-# standard implementation of _AC_LANG_OPENMP(Fortran), also checks whether the
-# macro _OPENMP is set by the compiler (if AC_FC_PP_SRCEXT was expanded
-# before).
-#
-m4_define([_ACX_LANG_OPENMP(Fortran)],
-  [AC_LANG_SOURCE([AC_PROVIDE_IFELSE([AC_FC_PP_SRCEXT],
-[m4_n([[#ifndef _OPENMP
-      choke me
-#endif]])])_AC_LANG_OPENMP])])
diff --git a/src/Makefile.am b/src/Makefile.am
index d6f257d6e31c25e0b383094da6fb30c9ca8c4395..08ac828665a48ee0d80712a9367bc0238750564d 100644
--- a/src/Makefile.am
+++ b/src/Makefile.am
@@ -5,25 +5,6 @@
 lib_LTLIBRARIES = libmtime.la
 
 AM_CPPFLAGS = -I$(top_srcdir)/include
-AM_FCFLAGS =
-
-if ENABLE_OPENMP
-# We cannot simply append $(OPENMP_FCFLAG) to AM_FCFLAGS because this breaks
-# linking with NAG compiler:
-#   a) whenever libtool is called for linking, it duplicates the openmp flag,
-#      which is considered as an error by NAG;
-#   b) libmtime.la gets an entry inherited_linker_flags=' -openmp' and it
-#      becomes impossible to link a C application to libmtime with libtool if
-#      the C compiler is gcc, which misinterpretes the flag '-openmp'.
-# Therefore, we prepend $(OPENMP_FCFLAG) with '-Xcompiler', which solves both of
-# the aforementioned problems: the openmp flag is used when linking the shared
-# version of libmtime but is not duplicated, additionaly, it is not saved to
-# libmtime.la as an inherited linker flag.
-# However, due to a bug in the argument parsing procedure, libtool fails if the
-# first argument for the compiler is '-Xcompiler <flag>' or '-Wc,<flag>'.
-# Therefore, we additionaly prepend AM_FCFLAGS with a dummy flag '$(FCMODINC).'.
-AM_FCFLAGS += $(FCMODINC). -Xcompiler $(OPENMP_FCFLAG)
-endif ENABLE_OPENMP
 
 libmtime_la_SOURCES =         \
     kepler.c                  \
diff --git a/src/Makefile.in b/src/Makefile.in
index 4a69dc18701a6483ea4c3f570635c4eaf5f20573..b46e153968f7b421dbda2158347bdfe77b6b9189 100644
--- a/src/Makefile.in
+++ b/src/Makefile.in
@@ -89,30 +89,14 @@ PRE_UNINSTALL = :
 POST_UNINSTALL = :
 build_triplet = @build@
 host_triplet = @host@
-
-# We cannot simply append $(OPENMP_FCFLAG) to AM_FCFLAGS because this breaks
-# linking with NAG compiler:
-#   a) whenever libtool is called for linking, it duplicates the openmp flag,
-#      which is considered as an error by NAG;
-#   b) libmtime.la gets an entry inherited_linker_flags=' -openmp' and it
-#      becomes impossible to link a C application to libmtime with libtool if
-#      the C compiler is gcc, which misinterpretes the flag '-openmp'.
-# Therefore, we prepend $(OPENMP_FCFLAG) with '-Xcompiler', which solves both of
-# the aforementioned problems: the openmp flag is used when linking the shared
-# version of libmtime but is not duplicated, additionaly, it is not saved to
-# libmtime.la as an inherited linker flag.
-# However, due to a bug in the argument parsing procedure, libtool fails if the
-# first argument for the compiler is '-Xcompiler <flag>' or '-Wc,<flag>'.
-# Therefore, we additionaly prepend AM_FCFLAGS with a dummy flag '$(FCMODINC).'.
-@ENABLE_OPENMP_TRUE@am__append_1 = $(FCMODINC). -Xcompiler $(OPENMP_FCFLAG)
-@ENABLE_FORTRAN_HL_TRUE@am__append_2 = \
+@ENABLE_FORTRAN_HL_TRUE@am__append_1 = \
 @ENABLE_FORTRAN_HL_TRUE@    libmtime_hl.f90 \
 @ENABLE_FORTRAN_HL_TRUE@    mtime_t_datetime.inc \
 @ENABLE_FORTRAN_HL_TRUE@    mtime_t_event.inc \
 @ENABLE_FORTRAN_HL_TRUE@    mtime_t_juliandelta.inc \
 @ENABLE_FORTRAN_HL_TRUE@    mtime_t_timedelta.inc
 
-@ENABLE_FORTRAN_HL_TRUE@am__append_3 = \
+@ENABLE_FORTRAN_HL_TRUE@am__append_2 = \
 @ENABLE_FORTRAN_HL_TRUE@    $(mtime_hl_mod)
 
 subdir = src
@@ -120,7 +104,6 @@ ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
 am__aclocal_m4_deps = $(top_srcdir)/m4/acx_fc_line_length.m4 \
 	$(top_srcdir)/m4/acx_fc_module.m4 \
 	$(top_srcdir)/m4/acx_fc_pp.m4 $(top_srcdir)/m4/acx_lang_lib.m4 \
-	$(top_srcdir)/m4/acx_lang_openmp.m4 \
 	$(top_srcdir)/m4/acx_lang_package.m4 \
 	$(top_srcdir)/m4/asx_common.m4 \
 	$(top_srcdir)/m4/ax_prog_doxygen.m4 \
@@ -367,7 +350,6 @@ NM = @NM@
 NMEDIT = @NMEDIT@
 OBJDUMP = @OBJDUMP@
 OBJEXT = @OBJEXT@
-OPENMP_FCFLAG = @OPENMP_FCFLAG@
 OTOOL = @OTOOL@
 OTOOL64 = @OTOOL64@
 PACKAGE = @PACKAGE@
@@ -455,14 +437,13 @@ top_srcdir = @top_srcdir@
 #
 lib_LTLIBRARIES = libmtime.la
 AM_CPPFLAGS = -I$(top_srcdir)/include
-AM_FCFLAGS = $(am__append_1)
 libmtime_la_SOURCES = kepler.c libmtime.f90 mtime_c_bindings.f90 \
 	mtime_calendar.c mtime_calendar360day.c mtime_calendar365day.c \
 	mtime_calendarGregorian.c mtime_constants.f90 mtime_date.c \
 	mtime_datetime.c mtime_error_handling.f90 \
 	mtime_eventHandling.c mtime_eventList.c mtime_iso8601.c \
 	mtime_julianDay.c mtime_time.c mtime_timedelta.c \
-	mtime_utilities.c orbit.c vsop87.c $(am__append_2)
+	mtime_utilities.c orbit.c vsop87.c $(am__append_1)
 @FCMODUC_FALSE@mtime_c_bindings_mod = mtime_c_bindings.$(FCMODEXT)
 @FCMODUC_TRUE@mtime_c_bindings_mod = MTIME_C_BINDINGS.$(FCMODEXT)
 @FCMODUC_FALSE@mtime_constants_mod = mtime_constants.$(FCMODEXT)
@@ -501,7 +482,7 @@ libmtime_la_SOURCES = kepler.c libmtime.f90 mtime_c_bindings.f90 \
 @ENABLE_FORTRAN_HL_TRUE@@FCMODUC_TRUE@mtime_hl_mod = MTIME_HL.$(FCMODEXT)
 all_mods = $(mtime_c_bindings_mod) $(mtime_constants_mod) \
 	$(mtime_error_handling_mod) $(mtime_mod) $(mtime_other_mods) \
-	$(mtime_print_by_callback_mod) $(am__append_3)
+	$(mtime_print_by_callback_mod) $(am__append_2)
 nodist_include_HEADERS = $(all_mods)
 MOSTLYCLEANFILES = $(all_mods)
 python_PYTHON = libmtime.py mtime.py
diff --git a/src/libmtime.f90 b/src/libmtime.f90
index 05da435359ee997a90e6ec15b4f2aaa46ee3ed12..da4672c9cfbef93b46bd71f19e65f83077532e4f 100644
--- a/src/libmtime.f90
+++ b/src/libmtime.f90
@@ -82,7 +82,7 @@ CONTAINS
   !! @param[out]       string      the calendar type verbose
   !! @param[out]       errno       optional, error message
   !!
-  SUBROUTINE calendarToString(string, errno) !TESTED-OK
+  RECURSIVE SUBROUTINE calendarToString(string, errno) !TESTED-OK
     CHARACTER(len=max_calendar_str_len), INTENT(out) :: string
     INTEGER :: i
     TYPE(c_ptr) :: c_pointer
@@ -118,7 +118,7 @@ MODULE mtime_juliandelta
   !
 CONTAINS
   !
-  FUNCTION newJuliandelta(sign, day, ms, errno) RESULT(ret_juliandelta) !OK-TESTED.
+  RECURSIVE FUNCTION newJuliandelta(sign, day, ms, errno) RESULT(ret_juliandelta) !OK-TESTED.
     TYPE(juliandelta), POINTER :: ret_juliandelta
     CHARACTER(c_char), VALUE, INTENT(in) :: sign
     INTEGER(c_int64_t), INTENT(in) :: day
@@ -133,7 +133,7 @@ CONTAINS
   !
   !>
   !! @brief destructor for a Julian delta
-  SUBROUTINE deallocateJuliandelta(my_juliandelta) !OK-TESTED.
+  RECURSIVE SUBROUTINE deallocateJuliandelta(my_juliandelta) !OK-TESTED.
     TYPE(juliandelta), POINTER :: my_juliandelta
     CALL my_deallocatejuliandelta(C_LOC(my_juliandelta))
     my_juliandelta => NULL()
@@ -220,7 +220,7 @@ CONTAINS
   !! @param[in] ms             an integer denoting the actual milli seconds of a day
   !! @param[out]       errno       optional, error message
   !! @return    ret_julianday  a pointer of type(julianday)
-  FUNCTION newJulianday(day, ms, errno) RESULT(ret_julianday) !OK-TESTED.
+  RECURSIVE FUNCTION newJulianday(day, ms, errno) RESULT(ret_julianday) !OK-TESTED.
     TYPE(julianday), POINTER :: ret_julianday
     INTEGER(c_int64_t), INTENT(in) :: day
     INTEGER(c_int64_t), INTENT(in) :: ms
@@ -235,14 +235,14 @@ CONTAINS
   !! @brief destructor for a Julian date
   !!
   !! @param     my_julianday   a pointer of type(julianday)
-  SUBROUTINE deallocateJulianday(my_julianday) !OK-TESTED.
+  RECURSIVE SUBROUTINE deallocateJulianday(my_julianday) !OK-TESTED.
     TYPE(julianday), POINTER :: my_julianday
     CALL my_deallocatejulianday(C_LOC(my_julianday))
     my_julianday => NULL()
   END SUBROUTINE deallocateJulianday
   !
   ! NOTE: Do not call the function using replacejulianday(.,.) directly; Use overloaded '=' instead as in "dest = src"
-  SUBROUTINE replacejulianday(dest, src) !OK-TESTED.
+  RECURSIVE SUBROUTINE replacejulianday(dest, src) !OK-TESTED.
     TYPE(julianday), TARGET, INTENT(inout) :: dest
     TYPE(julianday), TARGET, INTENT(in) :: src
     TYPE(c_ptr) :: dummy_ptr
@@ -255,7 +255,7 @@ CONTAINS
   !! @param[in]  my_julianday   a pointer to type(julianday). The Julian day to be converted to a string
   !! @param[out] string         the Julian day verbose
   !! @param[out]       errno       optional, error message
-  SUBROUTINE juliandayToString(my_julianday, string, errno) !OK-TESTED.
+  RECURSIVE SUBROUTINE juliandayToString(my_julianday, string, errno) !OK-TESTED.
     TYPE(julianday), POINTER :: my_julianday
     CHARACTER(len=max_julianday_str_len), INTENT(out) :: string
     TYPE(c_ptr) :: dummy_ptr
@@ -269,7 +269,7 @@ CONTAINS
     string(i:LEN(string)) = ' '
   END SUBROUTINE juliandayToString
   !
-  FUNCTION addJuliandeltaToJulianday(op1, op2) RESULT(ret)
+  RECURSIVE FUNCTION addJuliandeltaToJulianday(op1, op2) RESULT(ret)
     TYPE(julianday), TARGET :: ret
     TYPE(julianday), TARGET, INTENT(in) :: op1
     TYPE(juliandelta), TARGET, INTENT(in) :: op2
@@ -278,7 +278,7 @@ CONTAINS
     dummy_ptr = my_addjuliandeltatojulianday(C_LOC(op1), C_LOC(op2), C_LOC(ret))
   END FUNCTION addJuliandeltaToJulianday
   !
-  FUNCTION addJuliandayToJuliandelta(op2, op1) RESULT(ret)
+  RECURSIVE FUNCTION addJuliandayToJuliandelta(op2, op1) RESULT(ret)
     TYPE(julianday), TARGET :: ret
     TYPE(julianday), TARGET, INTENT(in) :: op1
     TYPE(juliandelta), TARGET, INTENT(in) :: op2
@@ -287,7 +287,7 @@ CONTAINS
     dummy_ptr = my_addjuliandeltatojulianday(C_LOC(op1), C_LOC(op2), C_LOC(ret))
   END FUNCTION addJuliandayToJuliandelta
   !
-  FUNCTION subtractJuliandayFromJulianday(op1, op2) RESULT(ret)
+  RECURSIVE FUNCTION subtractJuliandayFromJulianday(op1, op2) RESULT(ret)
     TYPE(juliandelta), TARGET :: ret
     TYPE(julianday), TARGET, INTENT(in) :: op1
     TYPE(julianday), TARGET, INTENT(in) :: op2
@@ -304,7 +304,7 @@ CONTAINS
 #    define MTIME_PURE_IF_C_LOC_IS_PURE PURE
 #  endif
 #endif
-  MTIME_PURE_IF_C_LOC_IS_PURE FUNCTION julianday_gt(op1, op2) RESULT(gt)
+  MTIME_PURE_IF_C_LOC_IS_PURE RECURSIVE FUNCTION julianday_gt(op1, op2) RESULT(gt)
     LOGICAL :: gt
     TYPE(julianday), TARGET, INTENT(in) :: op1
     TYPE(julianday), TARGET, INTENT(in) :: op2
@@ -317,7 +317,7 @@ CONTAINS
     END IF
   END FUNCTION julianday_gt
   !
-  MTIME_PURE_IF_C_LOC_IS_PURE FUNCTION julianday_lt(op1, op2) RESULT(lt)
+  MTIME_PURE_IF_C_LOC_IS_PURE RECURSIVE FUNCTION julianday_lt(op1, op2) RESULT(lt)
     LOGICAL :: lt
     TYPE(julianday), TARGET, INTENT(in) :: op1
     TYPE(julianday), TARGET, INTENT(in) :: op2
@@ -330,7 +330,7 @@ CONTAINS
     END IF
   END FUNCTION julianday_lt
   !
-  MTIME_PURE_IF_C_LOC_IS_PURE FUNCTION julianday_lt_or_eq(op1, op2) RESULT(lt_or_eq)
+  MTIME_PURE_IF_C_LOC_IS_PURE RECURSIVE FUNCTION julianday_lt_or_eq(op1, op2) RESULT(lt_or_eq)
     LOGICAL :: lt_or_eq
     TYPE(julianday), TARGET, INTENT(in) :: op1
     TYPE(julianday), TARGET, INTENT(in) :: op2
@@ -343,7 +343,7 @@ CONTAINS
     END IF
   END FUNCTION julianday_lt_or_eq
   !
-  MTIME_PURE_IF_C_LOC_IS_PURE FUNCTION julianday_gt_or_eq(op1, op2) RESULT(gt_or_eq)
+  MTIME_PURE_IF_C_LOC_IS_PURE RECURSIVE FUNCTION julianday_gt_or_eq(op1, op2) RESULT(gt_or_eq)
     LOGICAL :: gt_or_eq
     TYPE(julianday), TARGET, INTENT(in) :: op1
     TYPE(julianday), TARGET, INTENT(in) :: op2
@@ -356,7 +356,7 @@ CONTAINS
     END IF
   END FUNCTION julianday_gt_or_eq
   !
-  MTIME_PURE_IF_C_LOC_IS_PURE FUNCTION julianday_eq(op1, op2) RESULT(eq)
+  MTIME_PURE_IF_C_LOC_IS_PURE RECURSIVE FUNCTION julianday_eq(op1, op2) RESULT(eq)
     LOGICAL :: eq
     TYPE(julianday), TARGET, INTENT(in) :: op1
     TYPE(julianday), TARGET, INTENT(in) :: op2
@@ -369,7 +369,7 @@ CONTAINS
     END IF
   END FUNCTION julianday_eq
   !
-  MTIME_PURE_IF_C_LOC_IS_PURE FUNCTION julianday_ne(op1, op2) RESULT(ne)
+  MTIME_PURE_IF_C_LOC_IS_PURE RECURSIVE FUNCTION julianday_ne(op1, op2) RESULT(ne)
     LOGICAL :: ne
     TYPE(julianday), TARGET, INTENT(in) :: op1
     TYPE(julianday), TARGET, INTENT(in) :: op2
@@ -424,7 +424,7 @@ CONTAINS
   !! @param[in] string         an ISO 8601 conforming date string
   !! @param[out]       errno       optional, error message
   !! @return    ret_date       a pointer of type(date)
-  FUNCTION newdatefromstring(string, errno) RESULT(ret_date)  !OK-TESTED.
+  RECURSIVE FUNCTION newdatefromstring(string, errno) RESULT(ret_date)  !OK-TESTED.
     TYPE(date), POINTER :: ret_date
     CHARACTER(len=*), INTENT(in) :: string
     TYPE(c_ptr) :: c_pointer
@@ -441,7 +441,7 @@ CONTAINS
   !! @param[in] day            the day
   !! @param[out]       errno       optional, error message
   !! @return    ret_date       a pointer of type(date)
-  FUNCTION newdatefromraw_yi8(year, month, day, errno) RESULT(ret_date) !OK-TESTED.
+  RECURSIVE FUNCTION newdatefromraw_yi8(year, month, day, errno) RESULT(ret_date) !OK-TESTED.
     TYPE(date), POINTER :: ret_date
     INTEGER(c_int64_t), INTENT(in) :: year
     INTEGER(c_int), INTENT(in) :: month, day
@@ -459,7 +459,7 @@ CONTAINS
   !! @param[in] day            the day
   !! @param[out]       errno       optional, error message
   !! @return    ret_date       a pointer of type(date)
-  FUNCTION newdatefromraw(year, month, day, errno) RESULT(ret_date) !OK-TESTED.
+  RECURSIVE FUNCTION newdatefromraw(year, month, day, errno) RESULT(ret_date) !OK-TESTED.
     TYPE(date), POINTER :: ret_date
     INTEGER(c_int), INTENT(in) :: year, month, day
     TYPE(c_ptr) :: c_pointer
@@ -474,7 +474,7 @@ CONTAINS
   !! @param[in] src            a pointer of type(date)
   !! @param[out]       errno       optional, error message
   !! @return    ret_date       a pointer of type(date)
-  FUNCTION newdatefromconstructandcopy(src, errno) RESULT(dest) !OK-TESTED
+  RECURSIVE FUNCTION newdatefromconstructandcopy(src, errno) RESULT(dest) !OK-TESTED
     TYPE(date), POINTER :: dest
     TYPE(date), TARGET :: src
     TYPE(c_ptr) :: c_pointer
@@ -487,7 +487,7 @@ CONTAINS
   !! @brief destructor for a date
   !!
   !! @param[in] my_date        a pointer of type(date)
-  SUBROUTINE deallocateDate(my_date) !OK-TESTED.
+  RECURSIVE SUBROUTINE deallocateDate(my_date) !OK-TESTED.
     TYPE(date), POINTER :: my_date
     CALL my_deallocatedate(C_LOC(my_date))
     my_date => NULL()
@@ -498,7 +498,7 @@ CONTAINS
   !! @param[in]  src            a pointer of type(date)
   !! @param[out] dest           a pointer of type(date)
   !! @param[out] errno          optional, error message
-  SUBROUTINE replaceDate(dest, src, errno)  !OK-TESTED.
+  RECURSIVE SUBROUTINE replaceDate(dest, src, errno)  !OK-TESTED.
     TYPE(date), TARGET, INTENT(inout) :: dest
     TYPE(date), TARGET, INTENT(in) :: src
     TYPE(c_ptr) :: dummy_ptr
@@ -519,7 +519,7 @@ CONTAINS
   !!
   !! @param[out]  errno
   !!         Optional, error message
-  SUBROUTINE dateToString(my_date, string, errno) !OK-TESTED.
+  RECURSIVE SUBROUTINE dateToString(my_date, string, errno) !OK-TESTED.
     TYPE(date), POINTER :: my_date
     CHARACTER(len=max_date_str_len) :: string
     TYPE(c_ptr) :: dummy_ptr
@@ -547,7 +547,7 @@ CONTAINS
   !!         Desired Format string. CRITICAL: Inappropriate fmt string will cause dump.
   !!
   !! @param[out]       errno       optional, error message
-  SUBROUTINE dateToPosixString(my_date, string, fmtstr, errno) !OK-TESTED.
+  RECURSIVE SUBROUTINE dateToPosixString(my_date, string, fmtstr, errno) !OK-TESTED.
     TYPE(date), POINTER :: my_date
     CHARACTER(len=max_date_str_len) :: string
     CHARACTER(len=*) :: fmtstr
@@ -602,7 +602,7 @@ MODULE mtime_time
 CONTAINS
   !
   !! @param[out]       errno       optional, error message
-  FUNCTION newtimefromstring(string, errno) RESULT(ret_time) !OK-TESTED.
+  RECURSIVE FUNCTION newtimefromstring(string, errno) RESULT(ret_time) !OK-TESTED.
     TYPE(time), POINTER :: ret_time
     CHARACTER(len=*), INTENT(in) :: string
     TYPE(c_ptr) :: c_pointer
@@ -613,7 +613,7 @@ CONTAINS
   END FUNCTION newtimefromstring
   !
   !! @param[out]       errno       optional, error message
-  FUNCTION newtimefromraw(hour, minute, second, ms, errno) RESULT(ret_time) !OK-TESTED.
+  RECURSIVE FUNCTION newtimefromraw(hour, minute, second, ms, errno) RESULT(ret_time) !OK-TESTED.
     TYPE(time), POINTER :: ret_time
     INTEGER(c_int), INTENT(in) :: hour, minute, second, ms
     TYPE(c_ptr) :: c_pointer
@@ -624,7 +624,7 @@ CONTAINS
   END FUNCTION newtimefromraw
   !
   !! @param[out]       errno       optional, error message
-  FUNCTION newtimefromconstructandcopy(src, errno) RESULT(dest) !OK-TESTED.
+  RECURSIVE FUNCTION newtimefromconstructandcopy(src, errno) RESULT(dest) !OK-TESTED.
     TYPE(time), POINTER :: dest
     TYPE(time), TARGET :: src
     TYPE(c_ptr) :: c_pointer
@@ -638,7 +638,7 @@ CONTAINS
   !!
   !! @param  my_time
   !!         A pointer to type time. my_time is deallocated.
-  SUBROUTINE deallocateTime(my_time) !OK-TESTED.
+  RECURSIVE SUBROUTINE deallocateTime(my_time) !OK-TESTED.
     TYPE(time), POINTER :: my_time
     CALL my_deallocatetime(C_LOC(my_time))
     my_time => NULL()
@@ -655,7 +655,7 @@ CONTAINS
   !!      A pointer to type time. Copy "TO" time object.
   !!
   !! @param[out]       errno       optional, error message
-  SUBROUTINE replaceTime(dest, src, errno) !OK-TESTED.
+  RECURSIVE SUBROUTINE replaceTime(dest, src, errno) !OK-TESTED.
     TYPE(time), TARGET, INTENT(in) :: src
     TYPE(time), TARGET, INTENT(inout) :: dest
     TYPE(c_ptr) :: dummy_ptr
@@ -675,7 +675,7 @@ CONTAINS
   !!         String where time is to be written.
   !!
   !! @param[out]       errno       optional, error message
-  SUBROUTINE timeToString(my_time, string, errno) !OK-TESTED.
+  RECURSIVE SUBROUTINE timeToString(my_time, string, errno) !OK-TESTED.
     TYPE(time), POINTER :: my_time
     CHARACTER(len=max_time_str_len) :: string
     TYPE(c_ptr) :: dummy_ptr
@@ -701,7 +701,7 @@ CONTAINS
   !!         Desired Format string. CRITICAL: Inappropriate fmt string will cause dump.
   !!
   !! @param[out]       errno       optional, error message
-  SUBROUTINE timeToPosixString(my_time, string, fmtstr, errno) !OK-TESTED.
+  RECURSIVE SUBROUTINE timeToPosixString(my_time, string, fmtstr, errno) !OK-TESTED.
     TYPE(time), POINTER :: my_time
     CHARACTER(len=max_time_str_len) :: string
     CHARACTER(len=32) :: fmtstr
@@ -813,7 +813,7 @@ MODULE mtime_datetime
 CONTAINS
   !
   !! @param[out]       errno       optional, error message
-  FUNCTION newdatetimefromstring(string, errno) RESULT(ret_datetime) !OK-TESTED
+  RECURSIVE FUNCTION newdatetimefromstring(string, errno) RESULT(ret_datetime) !OK-TESTED
     TYPE(datetime), POINTER :: ret_datetime
     CHARACTER(len=*), INTENT(in) :: string
     TYPE(c_ptr) :: c_pointer
@@ -824,7 +824,7 @@ CONTAINS
   END FUNCTION newdatetimefromstring
   !
   !! @param[out]       errno       optional, error message
-  FUNCTION newdatetimefromraw_yi8(year, month, day, hour, minute, second, ms, errno) RESULT(ret_datetime) !OK-TESTED
+  RECURSIVE FUNCTION newdatetimefromraw_yi8(year, month, day, hour, minute, second, ms, errno) RESULT(ret_datetime) !OK-TESTED
     TYPE(datetime), POINTER :: ret_datetime
     INTEGER(c_int64_t), INTENT(in) :: year
     INTEGER(c_int), INTENT(in) :: month, day, hour, minute, second, ms
@@ -836,7 +836,7 @@ CONTAINS
   END FUNCTION newdatetimefromraw_yi8
   !
   !! @param[out]       errno       optional, error message
-  FUNCTION newdatetimefromraw(year, month, day, hour, minute, second, ms, errno) RESULT(ret_datetime) !OK-TESTED
+  RECURSIVE FUNCTION newdatetimefromraw(year, month, day, hour, minute, second, ms, errno) RESULT(ret_datetime) !OK-TESTED
     TYPE(datetime), POINTER :: ret_datetime
     INTEGER(c_int), INTENT(in) :: year, month, day, hour, minute, second, ms
     TYPE(c_ptr) :: c_pointer
@@ -847,7 +847,7 @@ CONTAINS
   END FUNCTION newdatetimefromraw
   !
   !! @param[out]       errno       optional, error message
-  FUNCTION newdatetimefromconstructandcopy(src, errno) RESULT(dest) !OK-TESTED.
+  RECURSIVE FUNCTION newdatetimefromconstructandcopy(src, errno) RESULT(dest) !OK-TESTED.
     TYPE(datetime), POINTER :: dest
     TYPE(datetime), TARGET :: src
     TYPE(c_ptr) :: c_pointer
@@ -862,7 +862,7 @@ CONTAINS
   ! @note This function does not return a copy of one of the arguments
   ! but returns only the corresponding result point to avoid
   ! unnecessary deallocate calls.
-  FUNCTION datetime_min(a, b) RESULT(res)
+  RECURSIVE FUNCTION datetime_min(a, b) RESULT(res)
     TYPE(datetime), POINTER :: res
     TYPE(datetime), POINTER :: a, b
 
@@ -878,7 +878,7 @@ CONTAINS
   ! @note This function does not return a copy of one of the arguments
   ! but returns only the corresponding result point to avoid
   ! unnecessary deallocate calls.
-  FUNCTION datetime_max(a, b) RESULT(res)
+  RECURSIVE FUNCTION datetime_max(a, b) RESULT(res)
     TYPE(datetime), POINTER :: res
     TYPE(datetime), POINTER :: a, b
 
@@ -894,7 +894,7 @@ CONTAINS
   !!
   !! @param  my_datetime
   !!         A pointer to type datetime. my_datetime is deallocated.
-  SUBROUTINE deallocateDatetime(my_datetime) !OK-TESTED.
+  RECURSIVE SUBROUTINE deallocateDatetime(my_datetime) !OK-TESTED.
     TYPE(datetime), POINTER :: my_datetime
     CALL my_deallocatedatetime(C_LOC(my_datetime))
     NULLIFY (my_datetime)
@@ -911,7 +911,7 @@ CONTAINS
   !!         String where datetime is to be written.
   !!
   !! @param[out]       errno       optional, error message
-  SUBROUTINE datetimeToString(my_datetime, string, errno) !OK-TESTED
+  RECURSIVE SUBROUTINE datetimeToString(my_datetime, string, errno) !OK-TESTED
     TYPE(datetime), TARGET, INTENT(in) :: my_datetime
     CHARACTER(len=max_datetime_str_len) :: string
     TYPE(c_ptr) :: dummy_ptr
@@ -943,7 +943,7 @@ CONTAINS
   !!         Desired Format string. CRITICAL: Inappropriate fmt string will cause dump.
   !!
   !! @param[out]       errno       optional, error message
-  SUBROUTINE datetimeToPosixString(my_datetime, string, fmtstr, errno) !OK-TESTED.
+  RECURSIVE SUBROUTINE datetimeToPosixString(my_datetime, string, fmtstr, errno) !OK-TESTED.
     TYPE(datetime), TARGET, INTENT(in) :: my_datetime
     CHARACTER(len=max_datetime_str_len) :: string
     CHARACTER(len=*) :: fmtstr
@@ -959,14 +959,14 @@ CONTAINS
   END SUBROUTINE datetimeToPosixString
   !
   ! NOTE: Do not call the function using replacedatetime(.,.) directly; Use overloaded '=' instead as in "dest = src"
-  SUBROUTINE replacedatetime(dest, src) !OK-TESTED.
+  RECURSIVE SUBROUTINE replacedatetime(dest, src) !OK-TESTED.
     TYPE(datetime), TARGET, INTENT(inout) :: dest
     TYPE(datetime), TARGET, INTENT(in) :: src
     TYPE(c_ptr) :: dummy_ptr
     dummy_ptr = my_replacedatetime(C_LOC(src), C_LOC(dest))
   END SUBROUTINE replacedatetime
   !
-  MTIME_PURE_IF_C_LOC_IS_PURE FUNCTION datetime_gt(op1, op2) RESULT(gt) !OK-TESTED.
+  MTIME_PURE_IF_C_LOC_IS_PURE RECURSIVE FUNCTION datetime_gt(op1, op2) RESULT(gt) !OK-TESTED.
     LOGICAL :: gt
     TYPE(datetime), TARGET, INTENT(in) :: op1
     TYPE(datetime), TARGET, INTENT(in) :: op2
@@ -975,7 +975,7 @@ CONTAINS
     gt = (ret == 1_c_int)
   END FUNCTION datetime_gt
   !
-  MTIME_PURE_IF_C_LOC_IS_PURE FUNCTION datetime_lt(op1, op2) RESULT(lt) !OK-TESTED.
+  MTIME_PURE_IF_C_LOC_IS_PURE RECURSIVE FUNCTION datetime_lt(op1, op2) RESULT(lt) !OK-TESTED.
     LOGICAL :: lt
     TYPE(datetime), TARGET, INTENT(in) :: op1
     TYPE(datetime), TARGET, INTENT(in) :: op2
@@ -984,7 +984,7 @@ CONTAINS
     lt = (ret == -1_c_int)
   END FUNCTION datetime_lt
   !
-  MTIME_PURE_IF_C_LOC_IS_PURE FUNCTION datetime_lt_or_eq(op1, op2) RESULT(lt_or_eq) !OK-TESTED.
+  MTIME_PURE_IF_C_LOC_IS_PURE RECURSIVE FUNCTION datetime_lt_or_eq(op1, op2) RESULT(lt_or_eq) !OK-TESTED.
     LOGICAL :: lt_or_eq
     TYPE(datetime), TARGET, INTENT(in) :: op1
     TYPE(datetime), TARGET, INTENT(in) :: op2
@@ -993,7 +993,7 @@ CONTAINS
     lt_or_eq = (ret == 0_c_int) .OR. (ret == -1_c_int)
   END FUNCTION datetime_lt_or_eq
   !
-  MTIME_PURE_IF_C_LOC_IS_PURE FUNCTION datetime_gt_or_eq(op1, op2) RESULT(gt_or_eq) !OK-TESTED
+  MTIME_PURE_IF_C_LOC_IS_PURE RECURSIVE FUNCTION datetime_gt_or_eq(op1, op2) RESULT(gt_or_eq) !OK-TESTED
     LOGICAL :: gt_or_eq
     TYPE(datetime), TARGET, INTENT(in) :: op1
     TYPE(datetime), TARGET, INTENT(in) :: op2
@@ -1002,7 +1002,7 @@ CONTAINS
     gt_or_eq = (ret == 0_c_int) .OR. (ret == 1_c_int)
   END FUNCTION datetime_gt_or_eq
   !
-  MTIME_PURE_IF_C_LOC_IS_PURE FUNCTION datetime_eq(op1, op2) RESULT(eq) !OK-TESTED.
+  MTIME_PURE_IF_C_LOC_IS_PURE RECURSIVE FUNCTION datetime_eq(op1, op2) RESULT(eq) !OK-TESTED.
     LOGICAL :: eq
     TYPE(datetime), TARGET, INTENT(in) :: op1
     TYPE(datetime), TARGET, INTENT(in) :: op2
@@ -1011,7 +1011,7 @@ CONTAINS
     eq = ret == 0_c_int
   END FUNCTION datetime_eq
   !
-  MTIME_PURE_IF_C_LOC_IS_PURE FUNCTION datetime_ne(op1, op2) RESULT(ne) !OK-TESTED.
+  MTIME_PURE_IF_C_LOC_IS_PURE RECURSIVE FUNCTION datetime_ne(op1, op2) RESULT(ne) !OK-TESTED.
     LOGICAL :: ne
     TYPE(datetime), TARGET, INTENT(in) :: op1
     TYPE(datetime), TARGET, INTENT(in) :: op2
@@ -1035,7 +1035,7 @@ CONTAINS
   !!         Integer value of nod. The value depends on the month and the calendar type. Zero indicates error.
   !!
   !! @param[out]       errno       optional, error message
-  FUNCTION getNoOfDaysInMonthDateTime(dt, errno) !OK-TESTED.
+  RECURSIVE FUNCTION getNoOfDaysInMonthDateTime(dt, errno) !OK-TESTED.
     TYPE(datetime), TARGET :: dt
     INTEGER(c_int) :: getNoOfDaysInMonthDateTime
     INTEGER, OPTIONAL:: errno
@@ -1057,7 +1057,7 @@ CONTAINS
   !!         Integer value of nod. The value depends on the year and the calendar type. Zero indicates error.
   !!
   !! @param[out]       errno       optional, error message
-  FUNCTION getNoOfDaysInYearDateTime(dt, errno) !OK-TESTED.
+  RECURSIVE FUNCTION getNoOfDaysInYearDateTime(dt, errno) !OK-TESTED.
     TYPE(datetime), TARGET :: dt
     INTEGER(c_int) :: getNoOfDaysInYearDateTime
     INTEGER, OPTIONAL:: errno
@@ -1080,7 +1080,7 @@ CONTAINS
   !!         Integer value of doy. The value depends on the calendar type. Zero indicates error.
   !!
   !! @param[out]       errno       optional, error message
-  FUNCTION getDayOfYearFromDateTime(dt, errno) !OK-TESTED.
+  RECURSIVE FUNCTION getDayOfYearFromDateTime(dt, errno) !OK-TESTED.
     TYPE(datetime), TARGET :: dt
     INTEGER(c_int) :: getDayOfYearFromDateTime
     INTEGER, OPTIONAL:: errno
@@ -1097,7 +1097,7 @@ CONTAINS
   !!         int(i8) value of no_of_seconds. -1 indicates error.
   !!
   !! @param[out]       errno       optional, error message
-  FUNCTION getNoOfSecondsElapsedInMonthDateTime(dt, errno) !OK-TESTED.
+  RECURSIVE FUNCTION getNoOfSecondsElapsedInMonthDateTime(dt, errno) !OK-TESTED.
     TYPE(datetime), TARGET :: dt
     INTEGER(c_int64_t) :: getNoOfSecondsElapsedInMonthDateTime
     INTEGER, OPTIONAL:: errno
@@ -1114,7 +1114,7 @@ CONTAINS
   !!         int value of no_of_seconds. -1 indicates error.
   !!
   !! @param[out]       errno       optional, error message
-  FUNCTION getNoOfSecondsElapsedInDayDateTime(dt, errno) !OK-TESTED.
+  RECURSIVE FUNCTION getNoOfSecondsElapsedInDayDateTime(dt, errno) !OK-TESTED.
     TYPE(datetime), TARGET :: dt
     INTEGER(c_int) :: getNoOfSecondsElapsedInDayDateTime
     INTEGER, OPTIONAL:: errno
@@ -1134,7 +1134,7 @@ CONTAINS
   !!         A pointer to type julianday. JD where the converted value is stored.
   !!
   !! @param[out]       errno       optional, error message
-  SUBROUTINE getJulianDayFromDatetime(dt, jd, errno) !OK-TESTED.
+  RECURSIVE SUBROUTINE getJulianDayFromDatetime(dt, jd, errno) !OK-TESTED.
     TYPE(datetime), TARGET :: dt
     TYPE(julianday), TARGET :: jd
     TYPE(c_ptr) :: dummy_ptr
@@ -1155,7 +1155,7 @@ CONTAINS
   !!         A pointer to type datetime. The DT where the converted value is stored.
   !!
   !! @param[out]       errno       optional, error message
-  SUBROUTINE getDatetimeFromJulianDay(jd, dt, errno)
+  RECURSIVE SUBROUTINE getDatetimeFromJulianDay(jd, dt, errno)
     TYPE(julianday), TARGET, INTENT(in) :: jd
     TYPE(datetime), TARGET, INTENT(out) :: dt
     TYPE(c_ptr) :: dummy_ptr
@@ -1293,7 +1293,7 @@ MODULE mtime_timedelta
 CONTAINS
   !
   !! @param[out]       errno       optional, error message
-  FUNCTION newtimedeltafromstring(string, errno) RESULT(ret_timedelta) !OK-TESTED.
+  RECURSIVE FUNCTION newtimedeltafromstring(string, errno) RESULT(ret_timedelta) !OK-TESTED.
     TYPE(timedelta), POINTER :: ret_timedelta
     CHARACTER(len=*), INTENT(in) :: string
     TYPE(c_ptr) :: c_pointer
@@ -1308,7 +1308,7 @@ CONTAINS
   END FUNCTION newtimedeltafromstring
   !
   !! @param[out]       errno       optional, error message
-  FUNCTION newtimedeltafromraw(sign, year, month, day, hour, minute, second, ms, errno) RESULT(ret_timedelta)
+  RECURSIVE FUNCTION newtimedeltafromraw(sign, year, month, day, hour, minute, second, ms, errno) RESULT(ret_timedelta)
     TYPE(timedelta), POINTER :: ret_timedelta
     CHARACTER(len=*), INTENT(in) :: sign
     INTEGER(c_int), INTENT(in) :: year, month, day, hour, minute, second, ms
@@ -1326,7 +1326,7 @@ CONTAINS
   END FUNCTION newtimedeltafromraw
   !
   !! @param[out]       errno       optional, error message
-  FUNCTION newtimedeltafromraw_yi8(sign, year, month, day, hour, minute, second, ms, errno) RESULT(ret_timedelta)
+  RECURSIVE FUNCTION newtimedeltafromraw_yi8(sign, year, month, day, hour, minute, second, ms, errno) RESULT(ret_timedelta)
     TYPE(timedelta), POINTER :: ret_timedelta
     CHARACTER(len=*), INTENT(in) :: sign
     INTEGER(c_int64_t), INTENT(in) :: year
@@ -1345,7 +1345,7 @@ CONTAINS
   END FUNCTION newtimedeltafromraw_yi8
   !
   !! @param[out]       errno       optional, error message
-  FUNCTION newtimedeltafromconstructandcopy(src, errno) RESULT(dest) !OK-TESTED.
+  RECURSIVE FUNCTION newtimedeltafromconstructandcopy(src, errno) RESULT(dest) !OK-TESTED.
     TYPE(timedelta), POINTER :: dest
     TYPE(timedelta), TARGET :: src
     TYPE(c_ptr) :: c_pointer
@@ -1363,13 +1363,13 @@ CONTAINS
   !!
   !! @param  my_timedelta
   !!         A pointer to typetimedelta. my_timedelta is deallocated.
-  SUBROUTINE deallocateTimedelta(my_timedelta) !OK-TESTED.
+  RECURSIVE SUBROUTINE deallocateTimedelta(my_timedelta) !OK-TESTED.
     TYPE(timedelta), POINTER :: my_timedelta
     CALL my_deallocatetimedelta(C_LOC(my_timedelta))
     NULLIFY (my_timedelta)
   END SUBROUTINE deallocateTimedelta
   !
-  MTIME_PURE_IF_C_LOC_IS_PURE FUNCTION timedelta_gt(op1, op2) RESULT(gt)
+  MTIME_PURE_IF_C_LOC_IS_PURE RECURSIVE FUNCTION timedelta_gt(op1, op2) RESULT(gt)
     LOGICAL :: gt
     TYPE(timedelta), TARGET, INTENT(in) :: op1
     TYPE(timedelta), TARGET, INTENT(in) :: op2
@@ -1378,7 +1378,7 @@ CONTAINS
     gt = ret == 1_c_int
   END FUNCTION timedelta_gt
   !
-  MTIME_PURE_IF_C_LOC_IS_PURE FUNCTION timedelta_lt(op1, op2) RESULT(lt)
+  MTIME_PURE_IF_C_LOC_IS_PURE RECURSIVE FUNCTION timedelta_lt(op1, op2) RESULT(lt)
     LOGICAL :: lt
     TYPE(timedelta), TARGET, INTENT(in) :: op1
     TYPE(timedelta), TARGET, INTENT(in) :: op2
@@ -1387,7 +1387,7 @@ CONTAINS
     lt = ret == -1_c_int
   END FUNCTION timedelta_lt
   !
-  MTIME_PURE_IF_C_LOC_IS_PURE FUNCTION timedelta_lt_or_eq(op1, op2) RESULT(lt_or_eq)
+  MTIME_PURE_IF_C_LOC_IS_PURE RECURSIVE FUNCTION timedelta_lt_or_eq(op1, op2) RESULT(lt_or_eq)
     LOGICAL :: lt_or_eq
     TYPE(timedelta), TARGET, INTENT(in) :: op1
     TYPE(timedelta), TARGET, INTENT(in) :: op2
@@ -1396,7 +1396,7 @@ CONTAINS
     lt_or_eq = ret == 0_c_int .OR. ret == -1_c_int
   END FUNCTION timedelta_lt_or_eq
   !
-  MTIME_PURE_IF_C_LOC_IS_PURE FUNCTION timedelta_gt_or_eq(op1, op2) RESULT(gt_or_eq)
+  MTIME_PURE_IF_C_LOC_IS_PURE RECURSIVE FUNCTION timedelta_gt_or_eq(op1, op2) RESULT(gt_or_eq)
     LOGICAL :: gt_or_eq
     TYPE(timedelta), TARGET, INTENT(in) :: op1
     TYPE(timedelta), TARGET, INTENT(in) :: op2
@@ -1405,7 +1405,7 @@ CONTAINS
     gt_or_eq = ret == 0_c_int .OR. ret == 1_c_int
   END FUNCTION timedelta_gt_or_eq
   !
-  MTIME_PURE_IF_C_LOC_IS_PURE FUNCTION timedelta_eq(op1, op2) RESULT(eq)
+  MTIME_PURE_IF_C_LOC_IS_PURE RECURSIVE FUNCTION timedelta_eq(op1, op2) RESULT(eq)
     LOGICAL :: eq
     TYPE(timedelta), TARGET, INTENT(in) :: op1
     TYPE(timedelta), TARGET, INTENT(in) :: op2
@@ -1414,7 +1414,7 @@ CONTAINS
     eq = ret == 0_c_int
   END FUNCTION timedelta_eq
   !
-  MTIME_PURE_IF_C_LOC_IS_PURE FUNCTION timedelta_ne(op1, op2) RESULT(ne)
+  MTIME_PURE_IF_C_LOC_IS_PURE RECURSIVE FUNCTION timedelta_ne(op1, op2) RESULT(ne)
     LOGICAL :: ne
     TYPE(timedelta), TARGET, INTENT(in) :: op1
     TYPE(timedelta), TARGET, INTENT(in) :: op2
@@ -1443,7 +1443,7 @@ CONTAINS
   !!
   !! @return ret
   !!         A pointer to TimeDelta containing the result of subtraction.
-  FUNCTION getTimeDeltaFromDate(op1, op2) RESULT(ret) !OK-TESTED.
+  RECURSIVE FUNCTION getTimeDeltaFromDate(op1, op2) RESULT(ret) !OK-TESTED.
     TYPE(timedelta), TARGET :: ret
     TYPE(date), TARGET, INTENT(in)  :: op1, op2
     TYPE(c_ptr) :: dummy_ptr
@@ -1472,7 +1472,7 @@ CONTAINS
   !!
   !! @return ret
   !!        A pointer to TimeDelta containing the result of subtraction.
-  FUNCTION getTimeDeltaFromDateTime(op1, op2) RESULT(ret) !OK-TESTED.
+  RECURSIVE FUNCTION getTimeDeltaFromDateTime(op1, op2) RESULT(ret) !OK-TESTED.
     TYPE(timedelta), TARGET :: ret
     TYPE(datetime), TARGET, INTENT(in) :: op1, op2
     TYPE(c_ptr) :: dummy_ptr
@@ -1500,7 +1500,7 @@ CONTAINS
   !!         Integer value of totalmilliSeconds. 0 indicates error.
   !!
   !! WARNING: TD 0 is error. If you know your TD is 0, ignore the error flag.
-  FUNCTION getTotalMilliSecondsTimeDelta(td, dt, errno)  !OK-TESTED.
+  RECURSIVE FUNCTION getTotalMilliSecondsTimeDelta(td, dt, errno)  !OK-TESTED.
     INTEGER(c_int64_t) :: getTotalMilliSecondsTimeDelta
     TYPE(timedelta), TARGET, INTENT(in):: td
     TYPE(datetime), TARGET, INTENT(in) :: dt
@@ -1529,7 +1529,7 @@ CONTAINS
   !!         Integer value of totalSeconds. 0 indicates error.
   !!
   !! WARNING: TD 0 is error. If you know your TD is 0, ignore the error flag.
-  FUNCTION getTotalSecondsTimeDelta(td, dt, errno) !OK-TESTED.
+  RECURSIVE FUNCTION getTotalSecondsTimeDelta(td, dt, errno) !OK-TESTED.
     INTEGER(c_int64_t) :: getTotalSecondsTimeDelta
     TYPE(timedelta), TARGET, INTENT(in) :: td
     TYPE(datetime), TARGET, INTENT(in) :: dt
@@ -1550,7 +1550,7 @@ CONTAINS
   !!         String where timedelta is to be written.
   !!
   !! @param[out]       errno       optional, error message
-  SUBROUTINE timedeltaToString(my_timedelta, string, errno) !OK-TESTED.
+  RECURSIVE SUBROUTINE timedeltaToString(my_timedelta, string, errno) !OK-TESTED.
     TYPE(timedelta), TARGET :: my_timedelta
     CHARACTER(len=max_timedelta_str_len) :: string
     TYPE(c_ptr) :: dummy_ptr
@@ -1569,7 +1569,7 @@ CONTAINS
     END IF
   END SUBROUTINE timedeltaToString
   !
-  FUNCTION addTimedeltaToDatetime(op1, op2) RESULT(ret) !OK-TESTED.
+  RECURSIVE FUNCTION addTimedeltaToDatetime(op1, op2) RESULT(ret) !OK-TESTED.
     TYPE(datetime), TARGET :: ret
     TYPE(datetime), TARGET, INTENT(in) :: op1
     TYPE(timedelta), TARGET, INTENT(in) :: op2
@@ -1578,7 +1578,7 @@ CONTAINS
     dummy_ptr = my_addtimedeltatodatetime(C_LOC(op1), C_LOC(op2), C_LOC(ret))
   END FUNCTION addTimedeltaToDatetime
   !
-  FUNCTION addDatetimeToTimedelta(op2, op1) RESULT(ret) !OK-TESTED.
+  RECURSIVE FUNCTION addDatetimeToTimedelta(op2, op1) RESULT(ret) !OK-TESTED.
     TYPE(datetime), TARGET :: ret
     TYPE(datetime), TARGET, INTENT(in) :: op1
     TYPE(timedelta), TARGET, INTENT(in) :: op2
@@ -1587,7 +1587,7 @@ CONTAINS
     dummy_ptr = my_addtimedeltatodatetime(C_LOC(op1), C_LOC(op2), C_LOC(ret))
   END FUNCTION addDatetimeToTimedelta
   !
-  FUNCTION addTimedeltaToDate(op1, op2) RESULT(ret) !OK-TESTED.
+  RECURSIVE FUNCTION addTimedeltaToDate(op1, op2) RESULT(ret) !OK-TESTED.
     TYPE(date), TARGET :: ret
     TYPE(date), TARGET, INTENT(in) :: op1
     TYPE(timedelta), TARGET, INTENT(in) :: op2
@@ -1596,7 +1596,7 @@ CONTAINS
     dummy_ptr = my_addtimedeltatodate(C_LOC(op1), C_LOC(op2), C_LOC(ret))
   END FUNCTION addTimedeltaToDate
   !
-  FUNCTION addDateToTimedelta(op2, op1) RESULT(ret) !OK-TESTED.
+  RECURSIVE FUNCTION addDateToTimedelta(op2, op1) RESULT(ret) !OK-TESTED.
     TYPE(date), TARGET :: ret
     TYPE(date), TARGET, INTENT(in) :: op1
     TYPE(timedelta), TARGET, INTENT(in) :: op2
@@ -1605,7 +1605,7 @@ CONTAINS
     dummy_ptr = my_addtimedeltatodate(C_LOC(op1), C_LOC(op2), C_LOC(ret))
   END FUNCTION addDateToTimedelta
   !
-  FUNCTION elementwiseScalarMultiplyTimeDelta(base_td, ilambda) RESULT(scaled_td) !OK-TESTED.
+  RECURSIVE FUNCTION elementwiseScalarMultiplyTimeDelta(base_td, ilambda) RESULT(scaled_td) !OK-TESTED.
     TYPE(timedelta), TARGET :: scaled_td
     INTEGER(c_int32_t), INTENT(in) :: ilambda
     TYPE(timedelta), TARGET, INTENT(in) :: base_td
@@ -1616,7 +1616,7 @@ CONTAINS
     dummy_ptr = my_elementwisescalarmultiplytimedelta(C_LOC(base_td), lambda, C_LOC(scaled_td))
   END FUNCTION elementwiseScalarMultiplyTimeDelta
   !
-  FUNCTION elementwiseScalarMultiplyTimeDeltaInv(ilambda, base_td) RESULT(scaled_td) !OK-TESTED.
+  RECURSIVE FUNCTION elementwiseScalarMultiplyTimeDeltaInv(ilambda, base_td) RESULT(scaled_td) !OK-TESTED.
     TYPE(timedelta), TARGET :: scaled_td
     INTEGER(c_int32_t), INTENT(in) :: ilambda
     TYPE(timedelta), TARGET, INTENT(in) :: base_td
@@ -1627,7 +1627,7 @@ CONTAINS
     dummy_ptr = my_elementwisescalarmultiplytimedelta(C_LOC(base_td), lambda, C_LOC(scaled_td))
   END FUNCTION elementwiseScalarMultiplyTimeDeltaInv
   !
-  FUNCTION elementwiseScalarMultiplyTimeDelta_long(base_td, lambda) RESULT(scaled_td) !OK-TESTED.
+  RECURSIVE FUNCTION elementwiseScalarMultiplyTimeDelta_long(base_td, lambda) RESULT(scaled_td) !OK-TESTED.
     TYPE(timedelta), TARGET :: scaled_td
     INTEGER(c_int64_t), INTENT(in) :: lambda
     TYPE(timedelta), TARGET, INTENT(in) :: base_td
@@ -1636,7 +1636,7 @@ CONTAINS
     dummy_ptr = my_elementwisescalarmultiplytimedelta(C_LOC(base_td), lambda, C_LOC(scaled_td))
   END FUNCTION elementwiseScalarMultiplyTimeDelta_long
   !
-  FUNCTION elementwiseScalarMultiplyTimeDeltaInv_long(lambda, base_td) RESULT(scaled_td) !OK-TESTED.
+  RECURSIVE FUNCTION elementwiseScalarMultiplyTimeDeltaInv_long(lambda, base_td) RESULT(scaled_td) !OK-TESTED.
     TYPE(timedelta), TARGET :: scaled_td
     INTEGER(c_int64_t), INTENT(in) :: lambda
     TYPE(timedelta), TARGET, INTENT(in) :: base_td
@@ -1645,7 +1645,7 @@ CONTAINS
     dummy_ptr = my_elementwisescalarmultiplytimedelta(C_LOC(base_td), lambda, C_LOC(scaled_td))
   END FUNCTION elementwiseScalarMultiplyTimeDeltaInv_long
   !
-  FUNCTION elementwisescalarmultiplytimedelta_real(base_td, lambda) RESULT(scaled_td) !OK-TESTED.
+  RECURSIVE FUNCTION elementwisescalarmultiplytimedelta_real(base_td, lambda) RESULT(scaled_td) !OK-TESTED.
     TYPE(timedelta), TARGET :: scaled_td
     REAL(c_double), INTENT(in) :: lambda
     TYPE(timedelta), TARGET, INTENT(in) :: base_td
@@ -1654,7 +1654,7 @@ CONTAINS
     dummy_ptr = my_elementwisescalarmultiplytimedeltadp(C_LOC(base_td), lambda, C_LOC(scaled_td))
   END FUNCTION elementwisescalarmultiplytimedelta_real
   !
-  FUNCTION elementwiseAddTimeDeltatoTimeDelta(td1, td2) RESULT(added_td) !OK-TESTED.
+  RECURSIVE FUNCTION elementwiseAddTimeDeltatoTimeDelta(td1, td2) RESULT(added_td) !OK-TESTED.
     TYPE(timedelta), TARGET :: added_td
     TYPE(timedelta), TARGET, INTENT(in) :: td1, td2
     TYPE(c_ptr) :: dummy_ptr
@@ -1675,7 +1675,7 @@ CONTAINS
   !!
   !! @return rem
   !!       modulo(a, p)
-  FUNCTION moduloTimedelta(a, p, quot) RESULT(rem)
+  RECURSIVE FUNCTION moduloTimedelta(a, p, quot) RESULT(rem)
     TYPE(timedelta), TARGET, INTENT(in) :: a
     TYPE(timedelta), TARGET, INTENT(in) :: p
     INTEGER(c_int64_t), TARGET, INTENT(out) :: quot
@@ -1694,7 +1694,7 @@ CONTAINS
   !! @param[out]  string
   !!         Translated string is written here.
   !!
-  SUBROUTINE getPTStringFromMS(ms, string, errno) !OK-TESTED.
+  RECURSIVE SUBROUTINE getPTStringFromMS(ms, string, errno) !OK-TESTED.
     INTEGER(c_int64_t), INTENT(in) :: ms
     CHARACTER(len=*) :: string
     TYPE(c_ptr) :: dummy_ptr
@@ -1713,7 +1713,7 @@ CONTAINS
     END IF
   END SUBROUTINE getPTStringFromMS
   !
-  SUBROUTINE getPTStringFromSecondsInt(s, string, errno) !OK-TESTED.
+  RECURSIVE SUBROUTINE getPTStringFromSecondsInt(s, string, errno) !OK-TESTED.
     INTEGER(c_int64_t) :: s
     CHARACTER(len=*) :: string
     TYPE(c_ptr) :: dummy_ptr
@@ -1732,7 +1732,7 @@ CONTAINS
     END IF
   END SUBROUTINE getPTStringFromSecondsInt
   !
-  SUBROUTINE getPTStringFromSecondsFloat(s, string, errno) !OK-TESTED.
+  RECURSIVE SUBROUTINE getPTStringFromSecondsFloat(s, string, errno) !OK-TESTED.
     REAL(c_float) :: s
     CHARACTER(len=*) :: string
     TYPE(c_ptr) :: dummy_ptr
@@ -1751,7 +1751,7 @@ CONTAINS
     END IF
   END SUBROUTINE getPTStringFromSecondsFloat
   !
-  SUBROUTINE getPTStringFromSecondsDouble(s, string, errno) !OK-TESTED.
+  RECURSIVE SUBROUTINE getPTStringFromSecondsDouble(s, string, errno) !OK-TESTED.
     REAL(c_double) :: s
     CHARACTER(len=*) :: string
     TYPE(c_ptr) :: dummy_ptr
@@ -1781,7 +1781,7 @@ CONTAINS
   !! @param[out] string
   !!         Translated string is written here.
   !!
-  SUBROUTINE getPTStringFromMinutes(m, string, errno) !OK-TESTED.
+  RECURSIVE SUBROUTINE getPTStringFromMinutes(m, string, errno) !OK-TESTED.
     INTEGER(c_int64_t) :: m
     CHARACTER(len=*) :: string
     TYPE(c_ptr) :: dummy_ptr
@@ -1811,7 +1811,7 @@ CONTAINS
   !! @param[out]  string
   !!         Translated string is written here.
   !!
-  SUBROUTINE getPTStringFromHours(h, string, errno) !OK-TESTED.
+  RECURSIVE SUBROUTINE getPTStringFromHours(h, string, errno) !OK-TESTED.
     INTEGER(c_int64_t)                   :: h
     CHARACTER(len=*) :: string
     TYPE(c_ptr) :: dummy_ptr
@@ -1833,7 +1833,7 @@ CONTAINS
   !>
   !! @brief Convert time delta to "Julian calendar delta".
   !!
-  SUBROUTINE timeDeltaToJulianDelta(td, dt, jd)
+  RECURSIVE SUBROUTINE timeDeltaToJulianDelta(td, dt, jd)
     TYPE(c_ptr) :: dummy_ptr
     TYPE(timedelta), TARGET, INTENT(in) :: td
     TYPE(datetime), TARGET, INTENT(in) :: dt
@@ -1853,7 +1853,7 @@ CONTAINS
   !! @param[out]  quotient
   !!         A pointer to type divisionquotienttimespan
   !!
-  SUBROUTINE divideTimeDeltaInSeconds(dividend, divisor, quotient, errna)!OK-UNTESTED.
+  RECURSIVE SUBROUTINE divideTimeDeltaInSeconds(dividend, divisor, quotient, errna)!OK-UNTESTED.
     TYPE(timedelta), TARGET, INTENT(in) :: dividend
     TYPE(timedelta), TARGET, INTENT(in) :: divisor
     TYPE(divisionquotienttimespan), TARGET, INTENT(out) :: quotient
@@ -1875,7 +1875,7 @@ CONTAINS
   !!         Interval given in seconds.
   !!
   !! @return result of division. NULL indicates error.
-  SUBROUTINE divideTwoDatetimeDiffsInSeconds(dt1_dividend, dt2_dividend, &
+  RECURSIVE SUBROUTINE divideTwoDatetimeDiffsInSeconds(dt1_dividend, dt2_dividend, &
       &                                      dt1_divisor, dt2_divisor,  &
       &                                      denominator, quotient)
     TYPE(datetime), TARGET, INTENT(in) :: dt1_dividend
@@ -1907,7 +1907,7 @@ CONTAINS
   !! @param[out]  quotient
   !!         A pointer to type divisionquotienttimespan
   !!
-  SUBROUTINE divideDatetimeDifferenceInSeconds(dt1, dt2, divisor, quotient, errna)
+  RECURSIVE SUBROUTINE divideDatetimeDifferenceInSeconds(dt1, dt2, divisor, quotient, errna)
     TYPE(datetime), TARGET, INTENT(in) :: dt1
     TYPE(datetime), TARGET, INTENT(in) :: dt2
     TYPE(timedelta), TARGET, INTENT(in) :: divisor
@@ -1983,7 +1983,7 @@ MODULE mtime_events
 CONTAINS
   !
   !! @param[out]       errno       optional, error message
-  FUNCTION newEventWithString(name, referenceDate, firstdate, lastDate, interval, offset, errno) RESULT(ret_event) !OK-TESTED.
+  RECURSIVE FUNCTION newEventWithString(name, referenceDate, firstdate, lastDate, interval, offset, errno) RESULT(ret_event) !OK-TESTED.
     TYPE(event), POINTER :: ret_event
     CHARACTER(len=*), INTENT(in)           :: name
     CHARACTER(len=*), INTENT(in)           :: referenceDate
@@ -2011,7 +2011,7 @@ CONTAINS
   END FUNCTION newEventWithString
   !
   !! @param[out]       errno       optional, error message
-  FUNCTION newEventWithDataTypes(name, referenceDate, firstdate, lastDate, interval, offset, errno) RESULT(ret_event) !OK-TESTED.
+  RECURSIVE FUNCTION newEventWithDataTypes(name, referenceDate, firstdate, lastDate, interval, offset, errno) RESULT(ret_event) !OK-TESTED.
     TYPE(event), POINTER :: ret_event
     CHARACTER(len=*), INTENT(in) :: name
     TYPE(datetime), POINTER, INTENT(in) :: referenceDate
@@ -2039,13 +2039,13 @@ CONTAINS
   !!
   !! WARNING: If my_event was added to a group, this should never be called;
   !! use removeEventFromEventGroup instead.
-  SUBROUTINE deallocateEvent(my_event)
+  RECURSIVE SUBROUTINE deallocateEvent(my_event)
     TYPE(event), POINTER :: my_event
     CALL my_deallocateevent(C_LOC(my_event))
     my_event => NULL()
   END SUBROUTINE deallocateEvent
   !>
-  FUNCTION constructAndCopyEvent(my_event, errno) RESULT(ret_event) !OK-TESTED.
+  RECURSIVE FUNCTION constructAndCopyEvent(my_event, errno) RESULT(ret_event) !OK-TESTED.
     TYPE(event), POINTER :: ret_event
     TYPE(event), TARGET, INTENT(in) :: my_event
     INTEGER, OPTIONAL, INTENT(out) :: errno
@@ -2064,7 +2064,7 @@ CONTAINS
   !!         String where event is to be written.
   !!
   !! @param[out]       errno       optional, error message
-  SUBROUTINE eventToString(my_event, string, errno) !TODO:C code still incomplete.
+  RECURSIVE SUBROUTINE eventToString(my_event, string, errno) !TODO:C code still incomplete.
     TYPE(event), POINTER, INTENT(in) :: my_event
     CHARACTER(len=max_eventname_str_len), INTENT(out) :: string
     TYPE(c_ptr) :: dummy_ptr
@@ -2106,7 +2106,7 @@ CONTAINS
   !!
   !! @return ret
   !!        true/false indicating if the event is active.
-  FUNCTION isCurrentEventActive(my_event, my_datetime, plus_slack, minus_slack) RESULT(ret)
+  RECURSIVE FUNCTION isCurrentEventActive(my_event, my_datetime, plus_slack, minus_slack) RESULT(ret)
     TYPE(event), POINTER, INTENT(in) :: my_event
     TYPE(datetime), TARGET, INTENT(in) :: my_datetime
     TYPE(timedelta), POINTER, OPTIONAL, INTENT(in) :: plus_slack
@@ -2134,7 +2134,7 @@ CONTAINS
   !!
   !! @returns ret
   !!        Logical: true if next event is on new day
-  FUNCTION isEventNextInNextDay(my_event) RESULT(ret)
+  RECURSIVE FUNCTION isEventNextInNextDay(my_event) RESULT(ret)
     TYPE(event), POINTER, INTENT(in) :: my_event
     LOGICAL(c_bool) :: ret
     ret = my_iseventnextinnextday(C_LOC(my_event))
@@ -2147,7 +2147,7 @@ CONTAINS
   !!
   !! @returns ret
   !!        Logical: true if next event is in a new month
-  FUNCTION iseventNextInNextMonth(my_event) RESULT(ret)
+  RECURSIVE FUNCTION iseventNextInNextMonth(my_event) RESULT(ret)
     TYPE(event), POINTER, INTENT(in) :: my_event
     LOGICAL(c_bool) :: ret
     ret = my_iseventnextinnextmonth(C_LOC(my_event))
@@ -2160,7 +2160,7 @@ CONTAINS
   !!
   !! @returns ret
   !!        Logical: true if next event is in a new year
-  FUNCTION iseventNextInNextYear(my_event) RESULT(ret)
+  RECURSIVE FUNCTION iseventNextInNextYear(my_event) RESULT(ret)
     TYPE(event), POINTER, INTENT(in) :: my_event
     LOGICAL(c_bool) :: ret
     ret = my_iseventnextinnextyear(C_LOC(my_event))
@@ -2182,7 +2182,7 @@ CONTAINS
   !!         A variable of type datetime with next-trigger datetime.
   !!
   !! @param[out]       errno       optional, error message
-  SUBROUTINE getTriggerNextEventAtDateTime(my_event, my_currentdatetime, my_datetime, errno)
+  RECURSIVE SUBROUTINE getTriggerNextEventAtDateTime(my_event, my_currentdatetime, my_datetime, errno)
     TYPE(event), TARGET, INTENT(in) :: my_event
     TYPE(datetime), TARGET, INTENT(in) :: my_currentdatetime
     TYPE(datetime), TARGET, INTENT(out) :: my_datetime
@@ -2204,7 +2204,7 @@ CONTAINS
   !!         A variable of type datetime with last-trigger datetime.
   !!
   !! @param[out]       errno       optional, error message
-  SUBROUTINE getTriggeredPreviousEventAtDateTime(my_event, my_datetime, errno)
+  RECURSIVE SUBROUTINE getTriggeredPreviousEventAtDateTime(my_event, my_datetime, errno)
     TYPE(event), TARGET, INTENT(in) :: my_event
     TYPE(datetime), TARGET, INTENT(out) :: my_datetime
     TYPE(c_ptr) :: dummy_ptr
@@ -2221,7 +2221,7 @@ CONTAINS
   !! @returns ret_evtid
   !!        the event id
   !!
-  FUNCTION getEventId(my_event) RESULT(ret_evtid) !OK-TESTED.
+  RECURSIVE FUNCTION getEventId(my_event) RESULT(ret_evtid) !OK-TESTED.
     INTEGER(c_int64_t) :: ret_evtid
     TYPE(event), POINTER :: my_event
     ret_evtid = my_event%eventId
@@ -2235,7 +2235,7 @@ CONTAINS
   !! @param[out]       string      the name of the event
   !!
   !! @param[out]       errno       optional, error message
-  SUBROUTINE getEventName(my_event, string, errno) !OK-TESTED.
+  RECURSIVE SUBROUTINE getEventName(my_event, string, errno) !OK-TESTED.
     TYPE(event), POINTER, INTENT(in) :: my_event
     CHARACTER(len=max_eventname_str_len), INTENT(out) :: string
     TYPE(c_ptr) :: dummy_ptr
@@ -2257,7 +2257,7 @@ CONTAINS
   !! @returns ret_referenceDateTime
   !!        A pointer of type datetime. The event's reference date.
   !!
-  FUNCTION getEventReferenceDateTime(my_event) RESULT(ret_referenceDateTime) !OK-TESTED.
+  RECURSIVE FUNCTION getEventReferenceDateTime(my_event) RESULT(ret_referenceDateTime) !OK-TESTED.
     TYPE(datetime), POINTER :: ret_referenceDateTime
     TYPE(event), POINTER, INTENT(in) :: my_event
     TYPE(c_ptr) :: c_pointer
@@ -2277,7 +2277,7 @@ CONTAINS
   !! @returns ret_eventFirstDateTime
   !!        A pointer of type datetime. The event's first date.
   !!
-  FUNCTION getEventFirstDateTime(my_event) RESULT(ret_eventFirstDateTime) !OK-TESTED.
+  RECURSIVE FUNCTION getEventFirstDateTime(my_event) RESULT(ret_eventFirstDateTime) !OK-TESTED.
     TYPE(datetime), POINTER :: ret_eventFirstDateTime
     TYPE(event), POINTER, INTENT(in) :: my_event
     TYPE(c_ptr) :: c_pointer
@@ -2297,7 +2297,7 @@ CONTAINS
   !! @returns ret_eventLastDateTime
   !!        A pointer of type datetime. The event's last date.
   !!
-  FUNCTION getEventLastDateTime(my_event) RESULT(ret_eventLastDateTime) !OK-TESTED.
+  RECURSIVE FUNCTION getEventLastDateTime(my_event) RESULT(ret_eventLastDateTime) !OK-TESTED.
     TYPE(datetime), POINTER :: ret_eventLastDateTime
     TYPE(event), POINTER, INTENT(in) :: my_event
     TYPE(c_ptr) :: c_pointer
@@ -2317,7 +2317,7 @@ CONTAINS
   !! @returns ret_eventInterval
   !!        A pointer of type timedelta. The event's last date.
   !!
-  FUNCTION getEventInterval(my_event) RESULT(ret_eventInterval) !OK-TESTED.
+  RECURSIVE FUNCTION getEventInterval(my_event) RESULT(ret_eventInterval) !OK-TESTED.
     TYPE(timedelta), POINTER :: ret_eventInterval
     TYPE(event), POINTER, INTENT(in) :: my_event
     TYPE(c_ptr) :: c_pointer
@@ -2337,7 +2337,7 @@ CONTAINS
   !! @returns ret
   !!        Logical: true if event is first
   !!
-  FUNCTION getNextEventIsFirst(my_event) RESULT(ret)
+  RECURSIVE FUNCTION getNextEventIsFirst(my_event) RESULT(ret)
     TYPE(event), TARGET, INTENT(in) :: my_event
     LOGICAL(c_bool) :: ret
     ret = my_getnexteventisfirst(C_LOC(my_event))
@@ -2351,7 +2351,7 @@ CONTAINS
   !! @returns ret
   !!        Logical: true if event is first in day
   !!
-  FUNCTION getEventisFirstInDay(my_event) RESULT(ret)
+  RECURSIVE FUNCTION getEventisFirstInDay(my_event) RESULT(ret)
     TYPE(event), TARGET, INTENT(in) :: my_event
     LOGICAL(c_bool) :: ret
     ret = my_geteventisfirstinday(C_LOC(my_event))
@@ -2365,7 +2365,7 @@ CONTAINS
   !! @returns ret
   !!        Logical: true if event is first in month
   !!
-  FUNCTION getEventisFirstInMonth(my_event) RESULT(ret)
+  RECURSIVE FUNCTION getEventisFirstInMonth(my_event) RESULT(ret)
     TYPE(event), TARGET, INTENT(in) :: my_event
     LOGICAL(c_bool) :: ret
     ret = my_geteventisfirstinmonth(C_LOC(my_event))
@@ -2379,7 +2379,7 @@ CONTAINS
   !! @returns ret
   !!        Logical: true if event is first in year
   !!
-  FUNCTION getEventisFirstInYear(my_event) RESULT(ret)
+  RECURSIVE FUNCTION getEventisFirstInYear(my_event) RESULT(ret)
     TYPE(event), TARGET, INTENT(in) :: my_event
     LOGICAL(c_bool) :: ret
     ret = my_geteventisfirstinyear(C_LOC(my_event))
@@ -2394,7 +2394,7 @@ CONTAINS
   !!        Logical: true if event is last in day
   !!
 
-  FUNCTION getEventisLastInDay(my_event) RESULT(ret)
+  RECURSIVE FUNCTION getEventisLastInDay(my_event) RESULT(ret)
     TYPE(event), TARGET, INTENT(in) :: my_event
     LOGICAL(c_bool) :: ret
     ret = my_geteventislastinday(C_LOC(my_event))
@@ -2408,7 +2408,7 @@ CONTAINS
   !! @returns ret
   !!        Logical: true if event is last in month
   !!
-  FUNCTION getEventisLastInMonth(my_event) RESULT(ret)
+  RECURSIVE FUNCTION getEventisLastInMonth(my_event) RESULT(ret)
     TYPE(event), TARGET, INTENT(in) :: my_event
     LOGICAL(c_bool) :: ret
     ret = my_geteventislastinmonth(C_LOC(my_event))
@@ -2422,7 +2422,7 @@ CONTAINS
   !! @returns ret
   !!        Logical: true if event is last in year
   !!
-  FUNCTION getEventisLastInYear(my_event) RESULT(ret)
+  RECURSIVE FUNCTION getEventisLastInYear(my_event) RESULT(ret)
     TYPE(event), TARGET, INTENT(in) :: my_event
     LOGICAL(c_bool) :: ret
     ret = my_geteventislastinyear(C_LOC(my_event))
@@ -2474,7 +2474,7 @@ CONTAINS
   !! @return ret_eventgroup
   !!         A pointer to an initialized event-Group.
   !!
-  FUNCTION newEventGroup(name, errno) RESULT(ret_eventgroup) !OK-TESTED.
+  RECURSIVE FUNCTION newEventGroup(name, errno) RESULT(ret_eventgroup) !OK-TESTED.
     TYPE(eventgroup), POINTER :: ret_eventgroup
     CHARACTER(len=*), INTENT(in) :: name
     TYPE(c_ptr) :: c_pointer
@@ -2489,7 +2489,7 @@ CONTAINS
   !! @param[in] my_eventgroup
   !!         A pointer to type eventGroup. my_eventgroup is deallocated.
   !!
-  SUBROUTINE deallocateEventGroup(my_eventgroup) !OK-TESTED.
+  RECURSIVE SUBROUTINE deallocateEventGroup(my_eventgroup) !OK-TESTED.
     TYPE(eventgroup), POINTER :: my_eventgroup
     CALL my_deallocateeventgroup(C_LOC(my_eventgroup))
     my_eventgroup => NULL()
@@ -2505,7 +2505,7 @@ CONTAINS
   !!
   !! @return ret
   !!         true/false indicating success or failure of addition.
-  FUNCTION addEventToEventGroup(my_event, my_eventgroup) RESULT(ret) !OK-TESTED.
+  RECURSIVE FUNCTION addEventToEventGroup(my_event, my_eventgroup) RESULT(ret) !OK-TESTED.
     LOGICAL :: ret
     TYPE(event), TARGET, INTENT(in) :: my_event
     TYPE(eventgroup), TARGET, INTENT(inout) :: my_eventgroup
@@ -2522,7 +2522,7 @@ CONTAINS
   !!
   !! @return ret
   !!         true/false indicating success or failure of removal.
-  FUNCTION removeEventfromEventGroup(my_name, my_eventgroup) RESULT(ret) !OK-TESTED.
+  RECURSIVE FUNCTION removeEventfromEventGroup(my_name, my_eventgroup) RESULT(ret) !OK-TESTED.
     LOGICAL :: ret
     CHARACTER(len=*), INTENT(in) :: my_name
     TYPE(eventgroup), POINTER, INTENT(inout) :: my_eventgroup
@@ -2536,7 +2536,7 @@ CONTAINS
   !!
   !! @return ret_grpid
   !!         The event group id
-  FUNCTION getEventGroupId(my_eventgroup) RESULT(ret_grpid) !OK-TESTED.
+  RECURSIVE FUNCTION getEventGroupId(my_eventgroup) RESULT(ret_grpid) !OK-TESTED.
     INTEGER(c_int64_t) :: ret_grpid
     TYPE(eventgroup), POINTER, INTENT(in) :: my_eventgroup
     ret_grpid = my_eventgroup%eventGroupId
@@ -2550,7 +2550,7 @@ CONTAINS
   !! @param[out]       string      the name of the event group
   !!
   !! @param[out]       errno       optional, error message
-  SUBROUTINE getEventGroupName(my_eventgroup, string, errno)  !TESTED-OK.
+  RECURSIVE SUBROUTINE getEventGroupName(my_eventgroup, string, errno)  !TESTED-OK.
     TYPE(eventgroup), POINTER, INTENT(in) :: my_eventgroup
     CHARACTER(len=max_groupname_str_len) :: string
     TYPE(c_ptr) :: dummy_ptr
@@ -2571,7 +2571,7 @@ CONTAINS
   !!
   !! @returns ret_event
   !!        A pointer of type event. The first event in eventgroup
-  FUNCTION getFirstEventFromEventGroup(my_eventgroup) RESULT(ret_event) !OK-TESTED.
+  RECURSIVE FUNCTION getFirstEventFromEventGroup(my_eventgroup) RESULT(ret_event) !OK-TESTED.
     TYPE(event), POINTER :: ret_event
     TYPE(eventgroup), POINTER, INTENT(in) :: my_eventgroup
     TYPE(c_ptr) :: c_pointer
@@ -2590,7 +2590,7 @@ CONTAINS
   !!
   !! @returns ret_event
   !!        A pointer of type event. The next event in eventgroup
-  FUNCTION getNextEventFromEventGroup(my_event) RESULT(ret_event) !OK-TESTED.
+  RECURSIVE FUNCTION getNextEventFromEventGroup(my_event) RESULT(ret_event) !OK-TESTED.
     TYPE(event), POINTER :: ret_event
     TYPE(event), POINTER, INTENT(in) :: my_event
     TYPE(c_ptr) :: c_pointer
@@ -2639,7 +2639,7 @@ CONTAINS
   !! @return r
   !!         An int representing the number of repetitions.
   !!
-  FUNCTION getRepetitions(repetitionString) RESULT(r)
+  RECURSIVE FUNCTION getRepetitions(repetitionString) RESULT(r)
     INTEGER :: r
     CHARACTER(len=*), INTENT(in) :: repetitionString
     r = my_getRepetitions(TRIM(ADJUSTL(repetitionString))//c_null_char)
@@ -2668,7 +2668,7 @@ CONTAINS
   !! @param[out] lduration
   !!         Logical: true, if duration is available
   !!
-  SUBROUTINE splitRepetitionString(recurringTimeInterval, repetitor, start, END, duration, lrepetitor, lstart, lend, lduration)
+  RECURSIVE SUBROUTINE splitRepetitionString(recurringTimeInterval, repetitor, start, END, duration, lrepetitor, lstart, lend, lduration)
     CHARACTER(len=*), INTENT(in) :: recurringTimeInterval
     CHARACTER(len=*), INTENT(out) :: repetitor
     CHARACTER(len=*), INTENT(out) :: start
diff --git a/test/Makefile.in b/test/Makefile.in
index b901d7a44dbf005eff61608347370fc7829a85a7..48e84e1f74a2179f3f92e150438ca7f83a0c0c11 100644
--- a/test/Makefile.in
+++ b/test/Makefile.in
@@ -94,7 +94,6 @@ ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
 am__aclocal_m4_deps = $(top_srcdir)/m4/acx_fc_line_length.m4 \
 	$(top_srcdir)/m4/acx_fc_module.m4 \
 	$(top_srcdir)/m4/acx_fc_pp.m4 $(top_srcdir)/m4/acx_lang_lib.m4 \
-	$(top_srcdir)/m4/acx_lang_openmp.m4 \
 	$(top_srcdir)/m4/acx_lang_package.m4 \
 	$(top_srcdir)/m4/asx_common.m4 \
 	$(top_srcdir)/m4/ax_prog_doxygen.m4 \
@@ -481,7 +480,6 @@ NM = @NM@
 NMEDIT = @NMEDIT@
 OBJDUMP = @OBJDUMP@
 OBJEXT = @OBJEXT@
-OPENMP_FCFLAG = @OPENMP_FCFLAG@
 OTOOL = @OTOOL@
 OTOOL64 = @OTOOL64@
 PACKAGE = @PACKAGE@