diff --git a/.gitignore b/.gitignore
index 4d9c54a6235a58b15cccd703e168fdedd903bd72..31ad3afc4305371b4960bc6ef314d81babc4288d 100644
--- a/.gitignore
+++ b/.gitignore
@@ -4,6 +4,7 @@
 
 # Configure stage files
 .deps
+/a.out
 /config.log
 /config.status
 /config/config.h
@@ -18,7 +19,6 @@ Makefile
 *.lo
 *.mod
 *.o
-*.x
 .libs
 
 # Documentation stage files
diff --git a/Makefile.in b/Makefile.in
index e02e73031766c4fb42ac4bb0d2ef9ee7d62d1900..17a86cf132833f0f0cc4ebd19248d8fac7d5060b 100644
--- a/Makefile.in
+++ b/Makefile.in
@@ -90,8 +90,10 @@ host_triplet = @host@
 subdir = .
 ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
 am__aclocal_m4_deps = $(top_srcdir)/m4/acx_fc_module.m4 \
-	$(top_srcdir)/m4/acx_lang_lib.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 \
 	$(top_srcdir)/m4/libtool.m4 $(top_srcdir)/m4/ltoptions.m4 \
 	$(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \
@@ -171,8 +173,7 @@ am__DIST_COMMON = $(srcdir)/Makefile.in $(top_srcdir)/config/compile \
 	$(top_srcdir)/config/install-sh $(top_srcdir)/config/ltmain.sh \
 	$(top_srcdir)/config/missing COPYING NEWS README \
 	config/compile config/config.guess config/config.sub \
-	config/depcomp config/install-sh config/ltmain.sh \
-	config/missing
+	config/install-sh config/ltmain.sh config/missing
 DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
 distdir = $(PACKAGE)-$(VERSION)
 top_distdir = $(distdir)
@@ -294,6 +295,7 @@ NM = @NM@
 NMEDIT = @NMEDIT@
 OBJDUMP = @OBJDUMP@
 OBJEXT = @OBJEXT@
+OPENMP_FCFLAG = @OPENMP_FCFLAG@
 OTOOL = @OTOOL@
 OTOOL64 = @OTOOL64@
 PACKAGE = @PACKAGE@
@@ -356,7 +358,6 @@ pdfdir = @pdfdir@
 prefix = @prefix@
 program_transform_name = @program_transform_name@
 psdir = @psdir@
-runstatedir = @runstatedir@
 sbindir = @sbindir@
 sharedstatedir = @sharedstatedir@
 srcdir = @srcdir@
diff --git a/aclocal.m4 b/aclocal.m4
index 65755c64afb805aab7f766bdfe82590f833aee96..f5b6b50f92682d067d4feeb87a7d25e9db0e2c9d 100644
--- a/aclocal.m4
+++ b/aclocal.m4
@@ -1187,8 +1187,11 @@ AC_SUBST([am__untar])
 ]) # _AM_PROG_TAR
 
 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])
 m4_include([m4/libtool.m4])
 m4_include([m4/ltoptions.m4])
diff --git a/configure b/configure
index 78ab3f5f15c9b0d779e3ce3c21de2b5eba2536ff..7e1981f6f5c347fdb252e07fb1ffe504da59cbf5 100755
--- a/configure
+++ b/configure
@@ -1,6 +1,6 @@
 #! /bin/sh
 # Guess values for system-dependent variables and create Makefiles.
-# Generated by GNU Autoconf 2.69 for libmtime 0.1.0.
+# Generated by GNU Autoconf 2.69 for libmtime 1.0.9.
 #
 # Report bugs to <luis.kornblueh@zmaw.de>.
 #
@@ -590,8 +590,8 @@ MAKEFLAGS=
 # Identity of this package.
 PACKAGE_NAME='libmtime'
 PACKAGE_TARNAME='libmtime'
-PACKAGE_VERSION='0.1.0'
-PACKAGE_STRING='libmtime 0.1.0'
+PACKAGE_VERSION='1.0.9'
+PACKAGE_STRING='libmtime 1.0.9'
 PACKAGE_BUGREPORT='luis.kornblueh@zmaw.de'
 PACKAGE_URL=''
 
@@ -684,14 +684,15 @@ DX_DOCDIR
 DX_CONFIG
 DX_PROJECT
 RAGEL
-ENABLE_RAGEL_RULES_FALSE
-ENABLE_RAGEL_RULES_TRUE
 ENABLE_CHECK_FALSE
 ENABLE_CHECK_TRUE
 CHECK_CLIBS
 CHECK_CFLAGS
 ENABLE_EXAMPLES_FALSE
 ENABLE_EXAMPLES_TRUE
+ENABLE_OPENMP_FALSE
+ENABLE_OPENMP_TRUE
+OPENMP_FCFLAG
 FCMODINC
 FCMODUC_FALSE
 FCMODUC_TRUE
@@ -796,7 +797,6 @@ infodir
 docdir
 oldincludedir
 includedir
-runstatedir
 localstatedir
 sharedstatedir
 sysconfdir
@@ -831,12 +831,12 @@ enable_dependency_tracking
 with_gnu_ld
 with_sysroot
 enable_libtool_lock
+enable_openmp
 enable_examples
 enable_check
 with_check_root
 with_check_include
 with_check_lib
-enable_ragel_rules
 enable_doxygen_doc
 enable_doxygen_dot
 enable_doxygen_man
@@ -901,7 +901,6 @@ datadir='${datarootdir}'
 sysconfdir='${prefix}/etc'
 sharedstatedir='${prefix}/com'
 localstatedir='${prefix}/var'
-runstatedir='${localstatedir}/run'
 includedir='${prefix}/include'
 oldincludedir='/usr/include'
 docdir='${datarootdir}/doc/${PACKAGE_TARNAME}'
@@ -1154,15 +1153,6 @@ do
   | -silent | --silent | --silen | --sile | --sil)
     silent=yes ;;
 
-  -runstatedir | --runstatedir | --runstatedi | --runstated \
-  | --runstate | --runstat | --runsta | --runst | --runs \
-  | --run | --ru | --r)
-    ac_prev=runstatedir ;;
-  -runstatedir=* | --runstatedir=* | --runstatedi=* | --runstated=* \
-  | --runstate=* | --runstat=* | --runsta=* | --runst=* | --runs=* \
-  | --run=* | --ru=* | --r=*)
-    runstatedir=$ac_optarg ;;
-
   -sbindir | --sbindir | --sbindi | --sbind | --sbin | --sbi | --sb)
     ac_prev=sbindir ;;
   -sbindir=* | --sbindir=* | --sbindi=* | --sbind=* | --sbin=* \
@@ -1300,7 +1290,7 @@ fi
 for ac_var in	exec_prefix prefix bindir sbindir libexecdir datarootdir \
 		datadir sysconfdir sharedstatedir localstatedir includedir \
 		oldincludedir docdir infodir htmldir dvidir pdfdir psdir \
-		libdir localedir mandir runstatedir
+		libdir localedir mandir
 do
   eval ac_val=\$$ac_var
   # Remove trailing slashes.
@@ -1413,7 +1403,7 @@ if test "$ac_init_help" = "long"; then
   # Omit some internal or obsolete options to make the list less imposing.
   # This message is too long to be a string in the A/UX 3.1 sh.
   cat <<_ACEOF
-\`configure' configures libmtime 0.1.0 to adapt to many kinds of systems.
+\`configure' configures libmtime 1.0.9 to adapt to many kinds of systems.
 
 Usage: $0 [OPTION]... [VAR=VALUE]...
 
@@ -1453,7 +1443,6 @@ Fine tuning of the installation directories:
   --sysconfdir=DIR        read-only single-machine data [PREFIX/etc]
   --sharedstatedir=DIR    modifiable architecture-independent data [PREFIX/com]
   --localstatedir=DIR     modifiable single-machine data [PREFIX/var]
-  --runstatedir=DIR       modifiable per-process data [LOCALSTATEDIR/run]
   --libdir=DIR            object code libraries [EPREFIX/lib]
   --includedir=DIR        C header files [PREFIX/include]
   --oldincludedir=DIR     C header files for non-gcc [/usr/include]
@@ -1484,7 +1473,7 @@ fi
 
 if test -n "$ac_init_help"; then
   case $ac_init_help in
-     short | recursive ) echo "Configuration of libmtime 0.1.0:";;
+     short | recursive ) echo "Configuration of libmtime 1.0.9:";;
    esac
   cat <<\_ACEOF
 
@@ -1506,11 +1495,11 @@ 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-check          enable unit testing with check library
                           [default=auto]
-  --enable-ragel-rules    enable automatic regeneration of source files with
-                          ragel [default=yes]
   --disable-doxygen-doc   don't generate any doxygen documentation
   --enable-doxygen-dot    generate graphics for doxygen documentation
   --disable-doxygen-man   don't generate doxygen manual pages
@@ -1625,7 +1614,7 @@ fi
 test -n "$ac_init_help" && exit $ac_status
 if $ac_init_version; then
   cat <<\_ACEOF
-libmtime configure 0.1.0
+libmtime configure 1.0.9
 generated by GNU Autoconf 2.69
 
 Copyright (C) 2012 Free Software Foundation, Inc.
@@ -1987,7 +1976,7 @@ cat >config.log <<_ACEOF
 This file contains any messages produced by compilers while
 running configure, to aid debugging if configure makes a mistake.
 
-It was created by libmtime $as_me 0.1.0, which was
+It was created by libmtime $as_me 1.0.9, which was
 generated by GNU Autoconf 2.69.  Invocation command line was
 
   $ $0 $@
@@ -2856,7 +2845,7 @@ fi
 
 # Define the identity of the package.
  PACKAGE='libmtime'
- VERSION='0.1.0'
+ VERSION='1.0.9'
 
 
 cat >>confdefs.h <<_ACEOF
@@ -12120,6 +12109,7 @@ CC=$lt_save_CC
 # Only expand once:
 
 
+rm -f a.out
 
    { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $CC option to accept ISO C99" >&5
 $as_echo_n "checking for $CC option to accept ISO C99... " >&6; }
@@ -15634,35 +15624,31 @@ ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $
 ac_compiler_gnu=$ac_cv_c_compiler_gnu
 
 
+rm -f a.out
 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
 
 
-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
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for Fortran flag to compile preprocessed .f90 files" >&5
-$as_echo_n "checking for Fortran flag to compile preprocessed .f90 files... " >&6; }
-if ${ac_cv_fc_pp_srcext_f90+:} false; then :
+         { $as_echo "$as_me:${as_lineno-$LINENO}: checking for Fortran compiler flag needed to compile preprocessed .f90 files" >&5
+$as_echo_n "checking for Fortran compiler flag needed to compile preprocessed .f90 files... " >&6; }
+   if ${acx_cv_fc_pp_srcext_f90+:} false; then :
   $as_echo_n "(cached) " >&6
 else
-  ac_ext=f90
-ac_fcflags_pp_srcext_save=$ac_fcflags_srcext
-ac_fcflags_srcext=
-ac_cv_fc_pp_srcext_f90=unknown
-case $ac_ext in #(
-  [fF]77) ac_try=f77-cpp-input;; #(
-  *) ac_try=f95-cpp-input;;
+  acx_cv_fc_pp_srcext_f90=unknown
+      acx_ext_save=$ac_ext
+      acx_fcflags_srcext_save=$ac_fcflags_srcext
+      ac_ext=f90
+      case $acx_fc_pp_srcext_ext in #(
+  [fF]77) :
+    acx_fc_pp_srcext_try=f77-cpp-input ;; #(
+  *) :
+    acx_fc_pp_srcext_try=f95-cpp-input ;;
 esac
-for ac_flag in none -ftpp -fpp -Tf "-fpp -Tf" -xpp=fpp -Mpreprocess "-e Z" \
-               -cpp -xpp=cpp -qsuffix=cpp=f90 "-x $ac_try" +cpp -Cpp; do
-  test "x$ac_flag" != xnone && ac_fcflags_srcext="$ac_flag"
-  cat > conftest.$ac_ext <<_ACEOF
+      for ac_fcflags_srcext in '' -ftpp -fpp -Tf '-fpp -Tf' -xpp=fpp -Mpreprocess '-e T' '-e Z' -cpp -xpp=cpp -qsuffix=cpp=f90 "-x $acx_fc_pp_srcext_try" +cpp -Cpp; do
+        cat > conftest.$ac_ext <<_ACEOF
       program main
-
 #if 0
 #include <ac_nonexistent.h>
       choke me
@@ -15672,7 +15658,6 @@ _ACEOF
 if ac_fn_fc_try_compile "$LINENO"; then :
   cat > conftest.$ac_ext <<_ACEOF
       program main
-
 #if 1
 #include <ac_nonexistent.h>
       choke me
@@ -15682,36 +15667,39 @@ _ACEOF
 if ac_fn_fc_try_compile "$LINENO"; then :
 
 else
-  ac_cv_fc_pp_srcext_f90=$ac_flag; break
+  acx_cv_fc_pp_srcext_f90=$ac_fcflags_srcext
 fi
 rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
 fi
 rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-done
-rm -f conftest.$ac_objext conftest.f90
-ac_fcflags_srcext=$ac_fcflags_pp_srcext_save
-
+        test "x$acx_cv_fc_pp_srcext_f90" != xunknown && break
+      done
+      ac_fcflags_srcext=$acx_fcflags_srcext_save
+      ac_ext=$acx_ext_save
 fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_fc_pp_srcext_f90" >&5
-$as_echo "$ac_cv_fc_pp_srcext_f90" >&6; }
-if test "x$ac_cv_fc_pp_srcext_f90" = xunknown; then
-  as_fn_error $? "Fortran could not compile preprocessed .f90 files" "$LINENO" 5
+
+   if test -n "$acx_cv_fc_pp_srcext_f90"; then :
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $acx_cv_fc_pp_srcext_f90" >&5
+$as_echo "$acx_cv_fc_pp_srcext_f90" >&6; }
 else
-  ac_fc_srcext=f90
-  if test "x$ac_cv_fc_pp_srcext_f90" = xnone; then
-    ac_fcflags_srcext=""
-    FCFLAGS_f90=""
-  else
-    ac_fcflags_srcext=$ac_cv_fc_pp_srcext_f90
-    FCFLAGS_f90=$ac_cv_fc_pp_srcext_f90
-  fi
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: none needed" >&5
+$as_echo "none needed" >&6; }
+fi
 
+   if test "x$acx_cv_fc_pp_srcext_f90" = xunknown; then :
+  ac_fcflags_srcext=
+      FCFLAGS_f90=$ac_fcflags_srcext
+      { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+as_fn_error $? "unable to detect Fortran compiler flag needed to compile preprocessed .f90 files
+See \`config.log' for more details" "$LINENO" 5; }
+else
+  ac_fcflags_srcext=$acx_cv_fc_pp_srcext_f90
+      FCFLAGS_f90=$ac_fcflags_srcext
+      ac_fc_srcext=f90
+      ac_ext=$ac_fc_srcext
 
 fi
-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
 
 
    { $as_echo "$as_me:${as_lineno-$LINENO}: checking for Fortran compiler module file naming template" >&5
@@ -15723,6 +15711,8 @@ else
       cd conftest.dir
       cat > conftest.$ac_ext <<_ACEOF
       module conftest_module
+      implicit none
+      public
       contains
       subroutine conftest_routine
       end subroutine
@@ -15785,6 +15775,8 @@ else
       cd conftest.dir
       cat > conftest.$ac_ext <<_ACEOF
       module conftest_module
+      implicit none
+      public
       contains
       subroutine conftest_routine
       end subroutine
@@ -15803,10 +15795,12 @@ _ACEOF
          for acx_flag in -M -I '-I ' '-M ' -p '-mod ' '-module ' '-Am -I'; do
            FCFLAGS="$acx_save_FCFLAGS ${acx_flag}conftest.dir ${acx_flag}conftest.dir"
            if ac_fn_fc_try_compile "$LINENO"; then :
-  acx_cv_fc_module_in_flag=$acx_flag; break
+  acx_cv_fc_module_in_flag=$acx_flag
 fi
 rm -f core conftest.err conftest.$ac_objext
+           test "x$acx_cv_fc_module_in_flag" != xunknown && break
          done
+         rm -f conftest.$ac_ext
          FCFLAGS=$acx_save_FCFLAGS
 fi
 rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
@@ -15887,6 +15881,87 @@ if test "$ac_res" != no; then :
 fi
 
 
+# Check whether --enable-openmp was given.
+if test "${enable_openmp+set}" = set; then :
+  enableval=$enable_openmp;
+else
+  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
+
+      { $as_echo "$as_me:${as_lineno-$LINENO}: checking for Fortran compiler flag needed to enable OpenMP support" >&5
+$as_echo_n "checking for Fortran compiler flag needed to enable OpenMP support... " >&6; }
+   if ${acx_cv_fc_openmp_flag+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  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 -xopenmp -omp -qsmp=omp -Popenmp --openmp; 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$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 :
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $acx_cv_fc_openmp_flag" >&5
+$as_echo "$acx_cv_fc_openmp_flag" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: none needed" >&5
+$as_echo "none needed" >&6; }
+fi
+   if test "x$acx_cv_fc_openmp_flag" = xunknown; then :
+  { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+$as_echo "$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
+  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+set}" = set; then :
   enableval=$enable_examples;
@@ -15969,11 +16044,7 @@ fi
 
 if test x"$enable_check" != xno; then :
   mtime_save_CFLAGS=$CFLAGS
-   if ${CHECK_CFLAGS+:} false; then :
-
-else
-  CHECK_CFLAGS=$acx_c_CHECK_inc_search_args
-fi
+   CHECK_CFLAGS=${CHECK_CFLAGS-$acx_c_CHECK_inc_search_args}
    CFLAGS="$CHECK_CFLAGS $CFLAGS"
    ac_fn_c_check_header_compile "$LINENO" "check.h" "ac_cv_header_check_h" "//
 "
@@ -16012,13 +16083,17 @@ fi
         LIBS="$acx_libs $acx_save_LIBS"
         if ac_fn_c_try_link "$LINENO"; then :
   acx_cv_c_lib_func_tcase_create=$acx_libs
-           break
 fi
 rm -f core conftest.err conftest.$ac_objext \
     conftest$ac_exeext
+        if ${acx_cv_c_lib_func_tcase_create+:} false; then :
+  break
+fi
       done
+      rm -f conftest.$ac_ext
       LIBS=$acx_save_LIBS
 fi
+
    if ${acx_cv_c_lib_func_tcase_create+:} false; then :
   if test -n "$acx_cv_c_lib_func_tcase_create"; then :
   { $as_echo "$as_me:${as_lineno-$LINENO}: result: $acx_cv_c_lib_func_tcase_create" >&5
@@ -16077,22 +16152,6 @@ else
 fi
 
 
-# Check whether --enable-ragel-rules was given.
-if test "${enable_ragel_rules+set}" = set; then :
-  enableval=$enable_ragel_rules;
-else
-  enable_ragel_rules=yes
-fi
-
- if test x"$enable_ragel_rules" = xyes; then
-  ENABLE_RAGEL_RULES_TRUE=
-  ENABLE_RAGEL_RULES_FALSE='#'
-else
-  ENABLE_RAGEL_RULES_TRUE='#'
-  ENABLE_RAGEL_RULES_FALSE=
-fi
-
-
 
 RAGEL=${RAGEL-"${am_missing_run}ragel"}
 
@@ -18235,6 +18294,10 @@ 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
@@ -18243,10 +18306,6 @@ if test -z "${ENABLE_CHECK_TRUE}" && test -z "${ENABLE_CHECK_FALSE}"; then
   as_fn_error $? "conditional \"ENABLE_CHECK\" was never defined.
 Usually this means the macro was only invoked conditionally." "$LINENO" 5
 fi
-if test -z "${ENABLE_RAGEL_RULES_TRUE}" && test -z "${ENABLE_RAGEL_RULES_FALSE}"; then
-  as_fn_error $? "conditional \"ENABLE_RAGEL_RULES\" was never defined.
-Usually this means the macro was only invoked conditionally." "$LINENO" 5
-fi
 if test -z "${DX_FLAG_man_TRUE}" && test -z "${DX_FLAG_man_FALSE}"; then
   as_fn_error $? "conditional \"DX_FLAG_man\" was never defined.
 Usually this means the macro was only invoked conditionally." "$LINENO" 5
@@ -18660,7 +18719,7 @@ cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
 # report actual input values of CONFIG_FILES etc. instead of their
 # values after options handling.
 ac_log="
-This file was extended by libmtime $as_me 0.1.0, which was
+This file was extended by libmtime $as_me 1.0.9, which was
 generated by GNU Autoconf 2.69.  Invocation command line was
 
   CONFIG_FILES    = $CONFIG_FILES
@@ -18726,7 +18785,7 @@ _ACEOF
 cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
 ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`"
 ac_cs_version="\\
-libmtime config.status 0.1.0
+libmtime config.status 1.0.9
 configured by $0, generated by GNU Autoconf 2.69,
   with options \\"\$ac_cs_config\\"
 
diff --git a/configure.ac b/configure.ac
index 8227ec1b79efdcca1a95f35199f1d83e0efba65e..53f2797d2811f9add10dfcdd7555364eaa582201 100644
--- a/configure.ac
+++ b/configure.ac
@@ -1,28 +1,34 @@
 AC_PREREQ([2.69])
-AC_INIT([libmtime], [0.1.0], [luis.kornblueh@zmaw.de])
+AC_INIT([libmtime], [1.0.9], [luis.kornblueh@zmaw.de])
 
 AC_CONFIG_MACRO_DIR([m4])
 AC_CONFIG_AUX_DIR([config])
 AC_CONFIG_SRCDIR([include/mtime_calendar.h])
 AC_CONFIG_HEADERS([config/config.h])
 
-AM_INIT_AUTOMAKE([foreign])
+AM_INIT_AUTOMAKE([1.16.1 foreign])
 AM_MAINTAINER_MODE([disable])
 AM_EXTRA_RECURSIVE_TARGETS([doc install-doc man install-man])
 m4_ifdef([AM_SILENT_RULES], [AM_SILENT_RULES([yes])])
 
+LT_PREREQ([2.4.6])dnl
 LT_INIT([pic-only])
+dnl Clean up after Libtool checks for C compiler:
+rm -f a.out
 
 AC_PROG_CC_C99
 AS_VAR_IF([ac_cv_prog_cc_c99], [no],
   [AC_MSG_FAILURE([C compiler does not support ISO C99])])
 
 AC_PROG_FC
+dnl Clean up after Libtool checks for Fortran compiler:
+rm -f a.out
 AC_LANG_PUSH([Fortran])
-dnl Automake does not trace AC_FC_PP_SRCEXT and therefore does not add its
-dnl result to the compilation rules. But AC_FC_SRCEXT is traced, therefore,
-dnl we temporarily redefine AC_FC_SRCEXT so it would expand to AC_FC_PP_SRCEXT:
-m4_pushdef([AC_FC_SRCEXT], [AC_FC_PP_SRCEXT([$@])])
+dnl Automake does not trace AC_FC_PP_SRCEXT/ACX_FC_PP_SRCEXT and therefore
+dnl does not add their results to the compilation rules. But AC_FC_SRCEXT is
+dnl traced, therefore, we temporarily redefine AC_FC_SRCEXT so it would
+dnl expand to ACX_FC_PP_SRCEXT:
+m4_pushdef([AC_FC_SRCEXT], [ACX_FC_PP_SRCEXT($@)])
 AC_FC_SRCEXT([f90])
 m4_popdef([AC_FC_SRCEXT])
 ACX_FC_MODULE_NAMING([AC_SUBST([FCMODEXT], ["$acx_cv_fc_module_naming_ext"])])
@@ -32,6 +38,18 @@ AC_LANG_POP([Fortran])
 
 AC_SEARCH_LIBS([roundf], [m])
 
+AC_ARG_ENABLE([openmp],
+  [AC_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],
   [AC_HELP_STRING([--enable-examples],
      [build examples @<:@default=yes@:>@])], [],
@@ -47,7 +65,7 @@ ACX_LANG_PACKAGE_INIT([CHECK], [-I], [-L])
 
 AS_IF([test x"$enable_check" != xno],
   [mtime_save_CFLAGS=$CFLAGS
-   ASX_VAR_SET_IF_NOT_YET([CHECK_CFLAGS], [$acx_c_CHECK_inc_search_args])
+   CHECK_CFLAGS=${CHECK_CFLAGS-$acx_c_CHECK_inc_search_args}
    CFLAGS="$CHECK_CFLAGS $CFLAGS"
    AC_CHECK_HEADER([check.h],
      [ACX_LANG_LIB_SEARCH([CHECK_CLIBS], [tcase_create],
@@ -70,13 +88,6 @@ AS_VAR_IF([enable_check], [yes],
   [CHECK_CLIBS=;CHECK_CFLAGS=])
 AM_CONDITIONAL([ENABLE_CHECK], [test x"$enable_check" = xyes])
 
-AC_ARG_ENABLE([ragel-rules],
-  [AC_HELP_STRING([--enable-ragel-rules],
-     [enable automatic regeneration of source files with ragel ]dnl
-[@<:@default=yes@:>@])], [],
-  [enable_ragel_rules=yes])
-AM_CONDITIONAL([ENABLE_RAGEL_RULES], [test x"$enable_ragel_rules" = xyes])
-
 AM_MISSING_PROG([RAGEL], [ragel])
 
 DX_DOXYGEN_FEATURE([ON])
diff --git a/doc/Makefile.in b/doc/Makefile.in
index bba47deaa9e4b367084ae35e673ef5c1d3e721c4..b0ec558c4d9e3773104ede7ced306fc832b42676 100644
--- a/doc/Makefile.in
+++ b/doc/Makefile.in
@@ -90,8 +90,10 @@ host_triplet = @host@
 subdir = doc
 ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
 am__aclocal_m4_deps = $(top_srcdir)/m4/acx_fc_module.m4 \
-	$(top_srcdir)/m4/acx_lang_lib.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 \
 	$(top_srcdir)/m4/libtool.m4 $(top_srcdir)/m4/ltoptions.m4 \
 	$(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \
@@ -206,6 +208,7 @@ NM = @NM@
 NMEDIT = @NMEDIT@
 OBJDUMP = @OBJDUMP@
 OBJEXT = @OBJEXT@
+OPENMP_FCFLAG = @OPENMP_FCFLAG@
 OTOOL = @OTOOL@
 OTOOL64 = @OTOOL64@
 PACKAGE = @PACKAGE@
@@ -268,7 +271,6 @@ pdfdir = @pdfdir@
 prefix = @prefix@
 program_transform_name = @program_transform_name@
 psdir = @psdir@
-runstatedir = @runstatedir@
 sbindir = @sbindir@
 sharedstatedir = @sharedstatedir@
 srcdir = @srcdir@
diff --git a/examples/Makefile.am b/examples/Makefile.am
index 70fbeb72251e6540ad754182a489ea1f30476746..43276848de59bea4f450da9e3121261a9c45b7ed 100644
--- a/examples/Makefile.am
+++ b/examples/Makefile.am
@@ -1,5 +1,5 @@
 if ENABLE_EXAMPLES
-noinst_PROGRAMS =       \
+noinst_PROGRAMS =     \
     callback_test     \
     comp_weights      \
     duration          \
@@ -15,9 +15,9 @@ noinst_PROGRAMS =       \
     repetitor         \
     simulate_iau      \
     tas               \
+    test_dace         \
     time_calculus     \
-    uniq              \
-    test_dace
+    uniq
 endif ENABLE_EXAMPLES
 
 AM_CPPFLAGS = -I$(top_srcdir)/include
@@ -31,8 +31,8 @@ iconoce_SOURCES = iconoce.f90 mo_event_manager.f90
 model_integration_SOURCES = model_integration.c
 modulo_SOURCES = modulo.c
 recurrence_SOURCES = recurrence.c
-time_calculus_SOURCES = time_calculus.c
 test_dace_SOURCES = test_dace.f90 mo_event_manager.f90
+time_calculus_SOURCES = time_calculus.c
 
 if FCMODUC
 mo_event_manager_mod = MO_EVENT_MANAGER.$(FCMODEXT)
@@ -72,21 +72,24 @@ output_control.$(OBJEXT)   \
 repetitor.$(OBJEXT)        \
 simulate_iau.$(OBJEXT)     \
 tas.$(OBJEXT)              \
-uniq.$(OBJEXT)             \
-test_dace.$(OBJEXT): $(top_builddir)/src/$(mtime_mod)
+test_dace.$(OBJEXT)        \
+uniq.$(OBJEXT): $(top_builddir)/src/$(mtime_mod)
 
 example_hl.$(OBJEXT)   \
 iconoce_hl.$(OBJEXT)   \
 simulate_iau.$(OBJEXT): $(top_builddir)/src/$(mtime_hl_mod)
 
-duration.$(OBJEXT):                               \
-    $(mo_kind_mod)                                \
+duration.$(OBJEXT):                                 \
+    $(mo_kind_mod)                                  \
     $(top_builddir)/src/$(mtime_error_handling_mod)
 
-iconatm.$(OBJEXT) \
-iconoce.$(OBJEXT) \
+iconatm.$(OBJEXT)   \
+iconoce.$(OBJEXT)   \
 test_dace.$(OBJEXT): $(mo_event_manager_mod)
 
+clean-local:
+	rm -rf *.dSYM
+
 MOSTLYCLEANFILES = $(mo_event_manager_mod) $(mo_exception_mod) $(mo_kind_mod)
 
 mostlyclean-local:
diff --git a/examples/Makefile.in b/examples/Makefile.in
index c60195b0124dcb56886257f22455c1a52681507b..10844193d4989b98276f14078fe4a59be10e0649 100644
--- a/examples/Makefile.in
+++ b/examples/Makefile.in
@@ -97,13 +97,15 @@ host_triplet = @host@
 @ENABLE_EXAMPLES_TRUE@	modulo$(EXEEXT) output_control$(EXEEXT) \
 @ENABLE_EXAMPLES_TRUE@	recurrence$(EXEEXT) repetitor$(EXEEXT) \
 @ENABLE_EXAMPLES_TRUE@	simulate_iau$(EXEEXT) tas$(EXEEXT) \
-@ENABLE_EXAMPLES_TRUE@	time_calculus$(EXEEXT) uniq$(EXEEXT) \
-@ENABLE_EXAMPLES_TRUE@	test_dace$(EXEEXT)
+@ENABLE_EXAMPLES_TRUE@	test_dace$(EXEEXT) \
+@ENABLE_EXAMPLES_TRUE@	time_calculus$(EXEEXT) uniq$(EXEEXT)
 subdir = examples
 ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
 am__aclocal_m4_deps = $(top_srcdir)/m4/acx_fc_module.m4 \
-	$(top_srcdir)/m4/acx_lang_lib.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 \
 	$(top_srcdir)/m4/libtool.m4 $(top_srcdir)/m4/ltoptions.m4 \
 	$(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \
@@ -363,6 +365,7 @@ NM = @NM@
 NMEDIT = @NMEDIT@
 OBJDUMP = @OBJDUMP@
 OBJEXT = @OBJEXT@
+OPENMP_FCFLAG = @OPENMP_FCFLAG@
 OTOOL = @OTOOL@
 OTOOL64 = @OTOOL64@
 PACKAGE = @PACKAGE@
@@ -425,7 +428,6 @@ pdfdir = @pdfdir@
 prefix = @prefix@
 program_transform_name = @program_transform_name@
 psdir = @psdir@
-runstatedir = @runstatedir@
 sbindir = @sbindir@
 sharedstatedir = @sharedstatedir@
 srcdir = @srcdir@
@@ -444,8 +446,8 @@ iconoce_SOURCES = iconoce.f90 mo_event_manager.f90
 model_integration_SOURCES = model_integration.c
 modulo_SOURCES = modulo.c
 recurrence_SOURCES = recurrence.c
-time_calculus_SOURCES = time_calculus.c
 test_dace_SOURCES = test_dace.f90 mo_event_manager.f90
+time_calculus_SOURCES = time_calculus.c
 @FCMODUC_FALSE@mo_event_manager_mod = mo_event_manager.$(FCMODEXT)
 @FCMODUC_TRUE@mo_event_manager_mod = MO_EVENT_MANAGER.$(FCMODEXT)
 @FCMODUC_FALSE@mo_exception_mod = mo_exception.$(FCMODEXT)
@@ -753,7 +755,7 @@ maintainer-clean-generic:
 	@echo "it deletes files that may require special tools to rebuild."
 clean: clean-am
 
-clean-am: clean-generic clean-libtool clean-noinstPROGRAMS \
+clean-am: clean-generic clean-libtool clean-local clean-noinstPROGRAMS \
 	mostlyclean-am
 
 distclean: distclean-am
@@ -845,20 +847,20 @@ uninstall-am:
 .MAKE: install-am install-strip
 
 .PHONY: CTAGS GTAGS TAGS all all-am am--depfiles check check-am clean \
-	clean-generic clean-libtool clean-noinstPROGRAMS cscopelist-am \
-	ctags ctags-am distclean distclean-compile distclean-generic \
-	distclean-libtool distclean-tags distdir doc-am doc-local dvi \
-	dvi-am html html-am info info-am install install-am \
-	install-data install-data-am install-doc-am install-doc-local \
-	install-dvi install-dvi-am install-exec install-exec-am \
-	install-html install-html-am install-info install-info-am \
-	install-man install-man-am install-man-local install-pdf \
-	install-pdf-am install-ps install-ps-am install-strip \
-	installcheck installcheck-am installdirs maintainer-clean \
-	maintainer-clean-generic man-am man-local mostlyclean \
-	mostlyclean-compile mostlyclean-generic mostlyclean-libtool \
-	mostlyclean-local pdf pdf-am ps ps-am tags tags-am uninstall \
-	uninstall-am
+	clean-generic clean-libtool clean-local clean-noinstPROGRAMS \
+	cscopelist-am ctags ctags-am distclean distclean-compile \
+	distclean-generic distclean-libtool distclean-tags distdir \
+	doc-am doc-local dvi dvi-am html html-am info info-am install \
+	install-am install-data install-data-am install-doc-am \
+	install-doc-local install-dvi install-dvi-am install-exec \
+	install-exec-am install-html install-html-am install-info \
+	install-info-am install-man install-man-am install-man-local \
+	install-pdf install-pdf-am install-ps install-ps-am \
+	install-strip installcheck installcheck-am installdirs \
+	maintainer-clean maintainer-clean-generic man-am man-local \
+	mostlyclean mostlyclean-compile mostlyclean-generic \
+	mostlyclean-libtool mostlyclean-local pdf pdf-am ps ps-am tags \
+	tags-am uninstall uninstall-am
 
 .PRECIOUS: Makefile
 
@@ -885,21 +887,24 @@ output_control.$(OBJEXT)   \
 repetitor.$(OBJEXT)        \
 simulate_iau.$(OBJEXT)     \
 tas.$(OBJEXT)              \
-uniq.$(OBJEXT)             \
-test_dace.$(OBJEXT): $(top_builddir)/src/$(mtime_mod)
+test_dace.$(OBJEXT)        \
+uniq.$(OBJEXT): $(top_builddir)/src/$(mtime_mod)
 
 example_hl.$(OBJEXT)   \
 iconoce_hl.$(OBJEXT)   \
 simulate_iau.$(OBJEXT): $(top_builddir)/src/$(mtime_hl_mod)
 
-duration.$(OBJEXT):                               \
-    $(mo_kind_mod)                                \
+duration.$(OBJEXT):                                 \
+    $(mo_kind_mod)                                  \
     $(top_builddir)/src/$(mtime_error_handling_mod)
 
-iconatm.$(OBJEXT) \
-iconoce.$(OBJEXT) \
+iconatm.$(OBJEXT)   \
+iconoce.$(OBJEXT)   \
 test_dace.$(OBJEXT): $(mo_event_manager_mod)
 
+clean-local:
+	rm -rf *.dSYM
+
 mostlyclean-local:
 	rm -f *.i
 
diff --git a/include/Makefile.in b/include/Makefile.in
index bc24f7bb200383bc203d592fbddd18b2b31c6428..fdf83307f182a2ec2bfd7226ed122ceb2abb5b9d 100644
--- a/include/Makefile.in
+++ b/include/Makefile.in
@@ -91,8 +91,10 @@ host_triplet = @host@
 subdir = include
 ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
 am__aclocal_m4_deps = $(top_srcdir)/m4/acx_fc_module.m4 \
-	$(top_srcdir)/m4/acx_lang_lib.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 \
 	$(top_srcdir)/m4/libtool.m4 $(top_srcdir)/m4/ltoptions.m4 \
 	$(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \
@@ -255,6 +257,7 @@ NM = @NM@
 NMEDIT = @NMEDIT@
 OBJDUMP = @OBJDUMP@
 OBJEXT = @OBJEXT@
+OPENMP_FCFLAG = @OPENMP_FCFLAG@
 OTOOL = @OTOOL@
 OTOOL64 = @OTOOL64@
 PACKAGE = @PACKAGE@
@@ -317,7 +320,6 @@ pdfdir = @pdfdir@
 prefix = @prefix@
 program_transform_name = @program_transform_name@
 psdir = @psdir@
-runstatedir = @runstatedir@
 sbindir = @sbindir@
 sharedstatedir = @sharedstatedir@
 srcdir = @srcdir@
diff --git a/m4/acx_fc_module.m4 b/m4/acx_fc_module.m4
index a5f6f49b237fcf6e3a1ffc8897feed919f1d38c3..986b7851b915dab28dbe2b8f02c4743877cf85ac 100644
--- a/m4/acx_fc_module.m4
+++ b/m4/acx_fc_module.m4
@@ -43,6 +43,8 @@ for module files],
       cd conftest.dir
       AC_COMPILE_IFELSE([AC_LANG_SOURCE(
 [[      module conftest_module
+      implicit none
+      public
       contains
       subroutine conftest_routine
       end subroutine
@@ -57,8 +59,10 @@ for module files],
            FCFLAGS="$acx_save_FCFLAGS ${acx_flag}conftest.dir dnl
 dnl Add the flag twice to prevent matching an output flag.
 ${acx_flag}conftest.dir"
-           AC_COMPILE_IFELSE([], [acx_cv_fc_module_in_flag=$acx_flag; break])
+           AC_COMPILE_IFELSE([], [acx_cv_fc_module_in_flag=$acx_flag])
+           test "x$acx_cv_fc_module_in_flag" != xunknown && break
          done
+         rm -f conftest.$ac_ext
          FCFLAGS=$acx_save_FCFLAGS])
       rm -rf conftest.dir])
    AS_VAR_IF([acx_cv_fc_module_in_flag], [unknown], [m4_default([$2],
@@ -97,6 +101,8 @@ for module files],
       mv conftest.$ac_ext sub/conftest.$ac_ext
       AC_LANG_CONFTEST([AC_LANG_SOURCE(
 [[      module conftest_module
+      implicit none
+      public
       contains
       subroutine conftest_routine
       end subroutine
@@ -106,9 +112,9 @@ for module files],
         FCFLAGS="${acx_flag}sub $acx_save_FCFLAGS"
         AC_COMPILE_IFELSE([],
           [cd sub
-           AC_COMPILE_IFELSE([],
-             [acx_cv_fc_module_out_flag=$acx_flag; cd ..; break])
+           AC_COMPILE_IFELSE([], [acx_cv_fc_module_out_flag=$acx_flag])
            cd ..])
+        test "x$acx_cv_fc_module_out_flag" != xunknown && break
       done
       FCFLAGS=$acx_save_FCFLAGS
       cd ..
@@ -145,6 +151,8 @@ AS_VAR_TEST_SET([acx_cv_fc_module_naming_ext])],
       cd conftest.dir
       AC_COMPILE_IFELSE([AC_LANG_SOURCE(
 [[      module conftest_module
+      implicit none
+      public
       contains
       subroutine conftest_routine
       end subroutine
diff --git a/m4/acx_fc_pp.m4 b/m4/acx_fc_pp.m4
new file mode 100644
index 0000000000000000000000000000000000000000..e1eebcb9b8186163177e94162795a9270871fed7
--- /dev/null
+++ b/m4/acx_fc_pp.m4
@@ -0,0 +1,89 @@
+# ACX_FC_PP_SRCEXT(EXTENSION,
+#                  [ACTION-IF-SUCCESS],
+#                  [ACTION-IF-FAILURE = FAILURE])
+# -----------------------------------------------------------------------------
+# Originally taken from the master branch of Autoconf where it is known as
+# AC_FC_PP_SRCEXT.
+# -----------------------------------------------------------------------------
+# Finds the Fortran compiler flag needed to enable Fortran preprocessing for
+# source files with extension EXTENSION. The result is either "unknown",
+# or the actual compiler flag required to enable Fortran preprocessing, which
+# may be an empty string.
+#
+# If successful, sets the output variable FCFLAGS_[]EXTENSION and the shell
+# variable ac_fcflags_srcext to the result, sets the shell variables
+# ac_fc_srcext and ac_ext to the EXTENSION, and runs ACTION-IF-SUCCESS;
+# otherwise sets the output variable FCFLAGS_[]EXTENSION and the shell variable
+# ac_fcflags_srcext to empty strings, keeps the shell variables ac_fc_srcext
+# and ac_ext unchanged, and runs ACTION-IF-FAILURE (defaults to failing with an
+# error message).
+#
+# The flag is cached in the acx_cv_fc_pp_srcext_[]EXTENSION, which may contain
+# whitespaces.
+#
+# Known flags:
+# gfortran: -cpp
+# SGI: -ftpp
+# SUN: -xpp={fpp,cpp}
+# IBM: -qsuffix=cpp=EXTENSION
+# HP: +cpp
+# PGI: -Mpreprocess
+# Absoft: -cpp
+# Cray: -e T, -e Z
+# Intel: -fpp (-Tf may also be needed right before the source file name)
+# PathScale: -ftpp, -cpp
+# Lahey: -Cpp
+# NAGWare: -fpp
+# Compaq/Tru64: -cpp
+# f2c: -cpp
+# g95: -cpp
+#
+AC_DEFUN([ACX_FC_PP_SRCEXT],
+  [m4_provide([AC_FC_PP_SRCEXT])dnl
+   AC_LANG_ASSERT([Fortran])dnl
+   m4_pushdef([acx_cache_var], [acx_cv_fc_pp_srcext_$1])dnl
+   AC_MSG_CHECKING([for Fortran compiler flag needed to compile dnl
+preprocessed .$1 files])
+   AC_CACHE_VAL([acx_cache_var],
+     [acx_cache_var=unknown
+      acx_ext_save=$ac_ext
+      acx_fcflags_srcext_save=$ac_fcflags_srcext
+      ac_ext=$1
+      AS_CASE([$acx_fc_pp_srcext_ext],
+        [[[fF]]77], [acx_fc_pp_srcext_try=f77-cpp-input],
+        [acx_fc_pp_srcext_try=f95-cpp-input])
+      for ac_fcflags_srcext in '' -ftpp -fpp -Tf '-fpp -Tf' -xpp=fpp dnl
+-Mpreprocess '-e T' '-e Z' -cpp -xpp=cpp -qsuffix=cpp=$1 dnl
+"-x $acx_fc_pp_srcext_try" +cpp -Cpp; do
+        AC_COMPILE_IFELSE([AC_LANG_PROGRAM([],
+[[#if 0
+#include <ac_nonexistent.h>
+      choke me
+#endif]])],
+          [AC_COMPILE_IFELSE([AC_LANG_PROGRAM([],
+[[#if 1
+#include <ac_nonexistent.h>
+      choke me
+#endif]])],
+             [],
+             [acx_cache_var=$ac_fcflags_srcext])])
+        test "x$acx_cache_var" != xunknown && break
+      done
+      ac_fcflags_srcext=$acx_fcflags_srcext_save
+      ac_ext=$acx_ext_save])
+   AS_IF([test -n "$acx_cache_var"],
+     [AC_MSG_RESULT([$acx_cache_var])],
+     [AC_MSG_RESULT([none needed])])
+   AC_SUBST([FCFLAGS_][$1])
+   AS_VAR_IF([acx_cache_var], [unknown],
+     [ac_fcflags_srcext=
+      AS_VAR_COPY([FCFLAGS_][$1], [ac_fcflags_srcext])
+      m4_default([$3],
+        [AC_MSG_FAILURE([unable to detect Fortran compiler flag needed to dnl
+compile preprocessed .$1 files])])],
+     [ac_fcflags_srcext=$acx_cache_var
+      AS_VAR_COPY([FCFLAGS_][$1], [ac_fcflags_srcext])
+      ac_fc_srcext=$1
+      AS_VAR_COPY([ac_ext], [ac_fc_srcext])
+      $2])
+   m4_popdef([acx_cache_var])])
diff --git a/m4/acx_lang_lib.m4 b/m4/acx_lang_lib.m4
index 792c79e514b78d5663c92a0c2c1048a4ecccf5a5..c8f824e1bf3e32ad1e477301e0b9e4f08dd53563 100644
--- a/m4/acx_lang_lib.m4
+++ b/m4/acx_lang_lib.m4
@@ -108,18 +108,17 @@ m4_define([ACX_LANG_LIB_SEARCH()],
   [m4_pushdef([acx_cache_var],
      [acx_cv_[]_AC_LANG_ABBREV[]_lib_func_[]AS_TR_SH([$2])])dnl
    AC_MSG_CHECKING([for linker flags enabling _AC_LANG function $2])
-   AS_VAR_SET_IF([acx_cache_var],
-     [AS_ECHO_N(["(cached) "]) >&AS_MESSAGE_FD],
+   AC_CACHE_VAL([acx_cache_var],
      [AC_LANG_CONFTEST([m4_default([$6], [AC_LANG_CALL([], [$2])])])
       acx_save_LIBS=$LIBS
       AS_VAR_SET_IF([$1], [set dummy "AS_VAR_GET([$1])"], [set dummy '' $3])
       shift
       for acx_libs in "$[@]"; do
         LIBS="$acx_libs $acx_save_LIBS"
-        AC_LINK_IFELSE([],
-          [AS_VAR_COPY([acx_cache_var], [acx_libs])
-           break])
+        AC_LINK_IFELSE([], [AS_VAR_COPY([acx_cache_var], [acx_libs])])
+        AS_VAR_SET_IF([acx_cache_var], [break])
       done
+      rm -f conftest.$ac_ext
       LIBS=$acx_save_LIBS])
    AS_VAR_SET_IF([acx_cache_var],
      [AS_IF([test -n "AS_VAR_GET(acx_cache_var)"],
diff --git a/m4/acx_lang_openmp.m4 b/m4/acx_lang_openmp.m4
new file mode 100644
index 0000000000000000000000000000000000000000..6994db133b3fb11b6316035a116b1ce59063f32d
--- /dev/null
+++ b/m4/acx_lang_openmp.m4
@@ -0,0 +1,96 @@
+# ACX_LANG_OPENMP_FLAG([ACTION-IF-SUCCESS],
+#                      [ACTION-IF-FAILURE = FAILURE])
+# -----------------------------------------------------------------------------
+# Originally taken from the master branch of Autoconf where it is a part of
+# AC_OPENMP.
+# -----------------------------------------------------------------------------
+# 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.
+#
+# Known flags:
+# Intel >= 16: -qopenmp
+# NAG, Intel < 16: -openmp
+# GNU: -fopenmp
+# Cray: -homp
+# SGI, PGI: -mp
+# SunPRO: -xopenmp
+# Tru64 Compaq C: -omp
+# IBM XL: -qsmp=omp
+# NEC SX: -Popenmp
+# Lahey Fortran: --openmp
+#
+# 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:
+#   201611 5.0 (OpenMP 5.0 preview 1)
+#   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 dnl
+-xopenmp -omp -qsmp=omp -Popenmp --openmp; 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/m4/acx_lang_package.m4 b/m4/acx_lang_package.m4
index 548cbf62e8027e326a615e420d0f4263785e66e2..170deb142422b047b3cf4f733bcea058bff01da6 100644
--- a/m4/acx_lang_package.m4
+++ b/m4/acx_lang_package.m4
@@ -4,7 +4,7 @@
 #                       [INC-SEARCH-SUFFIX = /include],
 #                       [LIB-SEARCH-SUFFIX = /lib])
 # -----------------------------------------------------------------------------
-# Sets command-line arguments of the configure script that allow users to set
+# Sets command-line arguments of the configure script that allows for setting
 # search paths for the PACKAGE-NAME. By default, sets only the
 # "--with-package-name-root" argument.
 #
@@ -79,51 +79,3 @@ m4_default([$5], [/lib])"])])
       m4_popdef([acx_package_with_lib])])
    m4_popdef([acx_package_ROOT])dnl
    m4_popdef([acx_package_with_root])])
-
-# ASX_TR_ARG(EXPRESSION)
-# -----------------------------------------------------------------------------
-# Transforms EXPRESSION into shell code that generates a name for a command
-# line argument. The result is literal when possible at M4 time, but must be
-# used with eval if EXPRESSION causes shell indirections.
-#
-AC_DEFUN([ASX_TR_ARG],
-  [AS_LITERAL_IF([$1],
-     [m4_translit(AS_TR_SH([$1]), [_A-Z], [-a-z])],
-     [m4_bpatsubst(AS_TR_SH([$1]), [`$],
-        [ | tr '_[]m4_cr_LETTERS[]' '-[]m4_cr_letters[]'`])])])
-
-# ASX_VAR_APPEND_UNIQ(VARIABLE,
-#                     [TEXT],
-#                     [SEPARATOR])
-# -----------------------------------------------------------------------------
-# Emits shell code to append the shell expansion of TEXT to the end of the
-# current contents of the polymorphic shell variable VARIABLE without
-# duplicating substrings. The TEXT can optionally be prepended with the shell
-# expansion of SEPARATOR. The SEPARATOR is not appended if VARIABLE is empty or
-# unset. Both TEXT and SEPARATOR need to be quoted properly to avoid field
-# splitting and file name expansion.
-#
-AC_DEFUN([ASX_VAR_APPEND_UNIQ],
-  [AS_CASE([$3[]AS_VAR_GET([$1])$3],
-     [*m4_ifnblank([$3], [$3$2$3], [$2])*], [],
-     [m4_ifnblank([$3],[$3$3],[''])], [AS_VAR_APPEND([$1], [$2])],
-     [AS_VAR_APPEND([$1], [$3]); AS_VAR_APPEND([$1], [$2])])])
-
-# ASX_PREPEND_LDFLAGS([LDFLAGS],
-#                     [LIBS],
-#                     ...)
-# -----------------------------------------------------------------------------
-# Prepends the first argument LDFLAGS to each of the rest of the arguments
-# LIBS and expands into a space separated list of the resulting strings. Each
-# element of the resulting list is shell-quoted with double quotation marks.
-#
-AC_DEFUN([ASX_PREPEND_LDFLAGS], [m4_foreach([arg], m4_cdr($@), [ "$1 arg"])])
-
-# ASX_VAR_SET_IF_NOT_YET(VARIABLE,
-#                        [VALUE])
-# -----------------------------------------------------------------------------
-# Expands into a shell script that checks whether the shell variable VARIABLE
-# is already set and sets it to the VALUE if it is not the case.
-#
-AC_DEFUN([ASX_VAR_SET_IF_NOT_YET],
-  [AS_VAR_SET_IF([$1], [], [AS_VAR_SET([$1], [$2])])])
diff --git a/m4/asx_common.m4 b/m4/asx_common.m4
new file mode 100644
index 0000000000000000000000000000000000000000..5f3838d6706b83c50555f62d33e53dff74098c9b
--- /dev/null
+++ b/m4/asx_common.m4
@@ -0,0 +1,76 @@
+# ASX_TR_ARG(EXPRESSION)
+# -----------------------------------------------------------------------------
+# Transforms EXPRESSION into shell code that generates a name for a command
+# line argument. The result is literal when possible at M4 time, but must be
+# used with eval if EXPRESSION causes shell indirections.
+#
+AC_DEFUN([ASX_TR_ARG],
+  [AS_LITERAL_IF([$1],
+     [m4_translit(AS_TR_SH([$1]), [_A-Z], [-a-z])],
+     [m4_bpatsubst(AS_TR_SH([$1]), [`$],
+        [ | tr '_[]m4_cr_LETTERS[]' '-[]m4_cr_letters[]'`])])])
+
+# ASX_VAR_APPEND_UNIQ(VARIABLE,
+#                     [TEXT],
+#                     [SEPARATOR])
+# -----------------------------------------------------------------------------
+# Emits shell code to append the shell expansion of TEXT to the end of the
+# current contents of the polymorphic shell variable VARIABLE without
+# duplicating substrings. The TEXT can optionally be prepended with the shell
+# expansion of SEPARATOR. The SEPARATOR is not appended if VARIABLE is empty or
+# unset. Both TEXT and SEPARATOR need to be quoted properly to avoid field
+# splitting and file name expansion.
+#
+AC_DEFUN([ASX_VAR_APPEND_UNIQ],
+  [AS_CASE([$3[]AS_VAR_GET([$1])$3],
+     [*m4_ifnblank([$3], [$3$2$3], [$2])*], [],
+     [m4_ifnblank([$3],[$3$3],[''])], [AS_VAR_APPEND([$1], [$2])],
+     [AS_VAR_APPEND([$1], [$3]); AS_VAR_APPEND([$1], [$2])])])
+
+# ASX_PREPEND_LDFLAGS([LDFLAGS],
+#                     [LIBS],
+#                     ...)
+# -----------------------------------------------------------------------------
+# Prepends the first argument LDFLAGS to each of the rest of the arguments
+# LIBS and expands into a space separated list of the resulting strings. Each
+# element of the resulting list is shell-quoted with double quotation marks.
+#
+AC_DEFUN([ASX_PREPEND_LDFLAGS], [m4_foreach([arg], m4_cdr($@), [ "$1 arg"])])
+
+# ASX_EXTRACT_ARGS(VARIABLE,
+#                  ARGUMENTS,
+#                  FLAG-PATTERN)
+# -----------------------------------------------------------------------------
+# Emits shell code to extract values of arguments that match sed-like pattern
+# FLAG-PATTERN from the string ARGUMENTS and set the result to the shell
+# variable VARIABLE. Both ARGUMENTS and FLAG-PATTERN must be shell-quoted.
+#
+# For example, the following extract library paths from the linking command:
+#     ASX_EXTRACT_ARGS([FC_LIB_PATHS],
+#                      ["$FCFLAGS $LDFLAGS $LIBS"],
+#                      ['-L@<:@ @:>@*'])
+#
+AC_DEFUN([ASX_EXTRACT_ARGS],
+  [AS_VAR_SET([$1])
+   asx_extract_args_args=$2
+   asx_extract_args_args=`AS_ECHO(["$asx_extract_args_args"]) | dnl
+sed 's%'$3'%_ASX_EXTRACT_ARGS_MARKER_%g'`
+   for asx_extract_args_arg in $asx_extract_args_args; do
+     AS_CASE([$asx_extract_args_arg],
+       [_ASX_EXTRACT_ARGS_MARKER_*],
+       [asx_extract_args_value=`AS_ECHO(["$asx_extract_args_arg"]) | dnl
+sed 's%^_ASX_EXTRACT_ARGS_MARKER_%%'`
+        AS_VAR_APPEND([$1], [" $asx_extract_args_value"])])
+   done])
+
+# ASX_ESCAPE_SINGLE_QUOTE(VARIABLE)
+# -----------------------------------------------------------------------------
+# Emits shell code that replaces any occurrence of the single-quote (') in the
+# shell variable VARIABLE with the following string: '\'', which is required
+# when contents of the VARIABLE must be passed literally to a subprocess, e.g.
+# eval \$SHELL -c "'$VARIABLE'".
+#
+AC_DEFUN([ASX_ESCAPE_SINGLE_QUOTE],
+  [AS_CASE([AS_VAR_GET([$1])], [*\'*],
+     [AS_VAR_SET([$1], [`AS_ECHO(["AS_VAR_GET([$1])"]) | dnl
+sed "s/'/'\\\\\\\\''/g"`])])])
diff --git a/src/Makefile.am b/src/Makefile.am
index 94c669a1919cda4308241828c5d5f88f5a7857fb..646154edee98aaf8586f5094fd19df7bd1ac37f7 100644
--- a/src/Makefile.am
+++ b/src/Makefile.am
@@ -1,6 +1,25 @@
 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                  \
@@ -101,7 +120,11 @@ libmtime_hl.lo:                 \
     $(mtime_c_bindings_mod)     \
     $(mtime_constants_mod)      \
     $(mtime_error_handling_mod) \
-    $(mtime_mod)
+    $(mtime_mod)                \
+    mtime_t_datetime.inc        \
+    mtime_t_event.inc           \
+    mtime_t_juliandelta.inc     \
+    mtime_t_timedelta.inc
 
 mtime_c_bindings.lo:            \
     $(mtime_constants_mod)      \
@@ -109,10 +132,8 @@ mtime_c_bindings.lo:            \
 
 mtime_error_handling.lo: $(mtime_constants_mod)
 
-if ENABLE_RAGEL_RULES
-mtime_iso8601.c: mtime_iso8601.rl
-	$(AM_V_GEN)$(RAGEL) -o $@ $<
-endif ENABLE_RAGEL_RULES
+mtime_iso8601.c: @MAINTAINER_MODE_TRUE@ mtime_iso8601.rl
+	$(AM_V_GEN)$(RAGEL) -o $@ mtime_iso8601.rl
 
 MOSTLYCLEANFILES = $(all_mods)
 
diff --git a/src/Makefile.in b/src/Makefile.in
index 7fc54e1bd987661dc5c87fe2fda5f3e8340d4266..d2323f8533aa8ec28546cc81eac878d9fca8fa95 100644
--- a/src/Makefile.in
+++ b/src/Makefile.in
@@ -89,11 +89,29 @@ 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)
 subdir = src
 ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
 am__aclocal_m4_deps = $(top_srcdir)/m4/acx_fc_module.m4 \
-	$(top_srcdir)/m4/acx_lang_lib.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 \
 	$(top_srcdir)/m4/libtool.m4 $(top_srcdir)/m4/ltoptions.m4 \
 	$(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \
@@ -319,6 +337,7 @@ NM = @NM@
 NMEDIT = @NMEDIT@
 OBJDUMP = @OBJDUMP@
 OBJEXT = @OBJEXT@
+OPENMP_FCFLAG = @OPENMP_FCFLAG@
 OTOOL = @OTOOL@
 OTOOL64 = @OTOOL64@
 PACKAGE = @PACKAGE@
@@ -381,7 +400,6 @@ pdfdir = @pdfdir@
 prefix = @prefix@
 program_transform_name = @program_transform_name@
 psdir = @psdir@
-runstatedir = @runstatedir@
 sbindir = @sbindir@
 sharedstatedir = @sharedstatedir@
 srcdir = @srcdir@
@@ -392,6 +410,7 @@ top_builddir = @top_builddir@
 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              \
@@ -915,7 +934,11 @@ libmtime_hl.lo:                 \
     $(mtime_c_bindings_mod)     \
     $(mtime_constants_mod)      \
     $(mtime_error_handling_mod) \
-    $(mtime_mod)
+    $(mtime_mod)                \
+    mtime_t_datetime.inc        \
+    mtime_t_event.inc           \
+    mtime_t_juliandelta.inc     \
+    mtime_t_timedelta.inc
 
 mtime_c_bindings.lo:            \
     $(mtime_constants_mod)      \
@@ -923,8 +946,8 @@ mtime_c_bindings.lo:            \
 
 mtime_error_handling.lo: $(mtime_constants_mod)
 
-@ENABLE_RAGEL_RULES_TRUE@mtime_iso8601.c: mtime_iso8601.rl
-@ENABLE_RAGEL_RULES_TRUE@	$(AM_V_GEN)$(RAGEL) -o $@ $<
+mtime_iso8601.c: @MAINTAINER_MODE_TRUE@ mtime_iso8601.rl
+	$(AM_V_GEN)$(RAGEL) -o $@ mtime_iso8601.rl
 
 mostlyclean-local:
 	rm -f *.i
diff --git a/test/.gitignore b/test/.gitignore
new file mode 100644
index 0000000000000000000000000000000000000000..35429f6171be7967a4b613e572d443c524bda037
--- /dev/null
+++ b/test/.gitignore
@@ -0,0 +1 @@
+test_runner
diff --git a/test/Makefile.am b/test/Makefile.am
index 399479d7f1f7030d96c862292b5dce93c4a6d8be..259e16b024eeeac7fd24bba96bb9e244266da1a2 100644
--- a/test/Makefile.am
+++ b/test/Makefile.am
@@ -23,5 +23,8 @@ libmtime_check_la_SOURCES = \
     mtime_timedelta_test.c  \
     mtime_timedelta_test.h
 
+clean-local:
+	rm -rf *.dSYM
+
 MOSTLYCLEANFILES = $(EXTRA_LTLIBRARIES)
 
diff --git a/test/Makefile.in b/test/Makefile.in
index 3781c832414c5dfeac34ac3194694b78189b4c6e..a5d9f22fd86c9727305da88ef2affc5b32ead587 100644
--- a/test/Makefile.in
+++ b/test/Makefile.in
@@ -92,8 +92,10 @@ TESTS = test_runner$(EXEEXT)
 subdir = test
 ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
 am__aclocal_m4_deps = $(top_srcdir)/m4/acx_fc_module.m4 \
-	$(top_srcdir)/m4/acx_lang_lib.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 \
 	$(top_srcdir)/m4/libtool.m4 $(top_srcdir)/m4/ltoptions.m4 \
 	$(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \
@@ -476,6 +478,7 @@ NM = @NM@
 NMEDIT = @NMEDIT@
 OBJDUMP = @OBJDUMP@
 OBJEXT = @OBJEXT@
+OPENMP_FCFLAG = @OPENMP_FCFLAG@
 OTOOL = @OTOOL@
 OTOOL64 = @OTOOL64@
 PACKAGE = @PACKAGE@
@@ -538,7 +541,6 @@ pdfdir = @pdfdir@
 prefix = @prefix@
 program_transform_name = @program_transform_name@
 psdir = @psdir@
-runstatedir = @runstatedir@
 sbindir = @sbindir@
 sharedstatedir = @sharedstatedir@
 srcdir = @srcdir@
@@ -957,7 +959,7 @@ maintainer-clean-generic:
 	@echo "it deletes files that may require special tools to rebuild."
 clean: clean-am
 
-clean-am: clean-checkPROGRAMS clean-generic clean-libtool \
+clean-am: clean-checkPROGRAMS clean-generic clean-libtool clean-local \
 	mostlyclean-am
 
 distclean: distclean-am
@@ -1056,23 +1058,27 @@ uninstall-am:
 
 .PHONY: CTAGS GTAGS TAGS all all-am am--depfiles check check-TESTS \
 	check-am clean clean-checkPROGRAMS clean-generic clean-libtool \
-	cscopelist-am ctags ctags-am distclean distclean-compile \
-	distclean-generic distclean-libtool distclean-tags distdir \
-	doc-am doc-local dvi dvi-am html html-am info info-am install \
-	install-am install-data install-data-am install-doc-am \
-	install-doc-local install-dvi install-dvi-am install-exec \
-	install-exec-am install-html install-html-am install-info \
-	install-info-am install-man install-man-am install-man-local \
-	install-pdf install-pdf-am install-ps install-ps-am \
-	install-strip installcheck installcheck-am installdirs \
-	maintainer-clean maintainer-clean-generic man-am man-local \
-	mostlyclean mostlyclean-compile mostlyclean-generic \
-	mostlyclean-libtool pdf pdf-am ps ps-am recheck tags tags-am \
-	uninstall uninstall-am
+	clean-local cscopelist-am ctags ctags-am distclean \
+	distclean-compile distclean-generic distclean-libtool \
+	distclean-tags distdir doc-am doc-local dvi dvi-am html \
+	html-am info info-am install install-am install-data \
+	install-data-am install-doc-am install-doc-local install-dvi \
+	install-dvi-am install-exec install-exec-am install-html \
+	install-html-am install-info install-info-am install-man \
+	install-man-am install-man-local install-pdf install-pdf-am \
+	install-ps install-ps-am install-strip installcheck \
+	installcheck-am installdirs maintainer-clean \
+	maintainer-clean-generic man-am man-local mostlyclean \
+	mostlyclean-compile mostlyclean-generic mostlyclean-libtool \
+	pdf pdf-am ps ps-am recheck tags tags-am uninstall \
+	uninstall-am
 
 .PRECIOUS: Makefile
 
 
+clean-local:
+	rm -rf *.dSYM
+
 # Tell versions [3.59,3.63) of GNU make to not export all variables.
 # Otherwise a system limit (for SysV at least) may be exceeded.
 .NOEXPORT: