From 72d220f4d26c429d753f3f9250f3a1db9110b26b Mon Sep 17 00:00:00 2001
From: Luis Kornblueh <luis.kornblueh@mpimet.mpg.de>
Date: Mon, 20 May 2019 07:02:24 +0200
Subject: [PATCH] Fix bug in timedelta adding with seconds larger than 59

---
 .gitignore             |   3 +-
 Makefile.in            |   4 +-
 configure              |  14 +-
 doc/Makefile.in        |   1 +
 examples/.gitignore    |  19 ++-
 examples/Makefile.am   |  56 ++++----
 examples/Makefile.in   | 315 +++++++++++++++++++++--------------------
 examples/test_dace.f90 | 140 ++++++++++++++++++
 include/Makefile.in    |   1 +
 pfunit/.gitignore      |   2 +-
 pfunit/GNUmakefile     |   4 +-
 src/Makefile.in        |   1 +
 src/mtime_timedelta.c  |  16 ++-
 test/Makefile.am       |   6 +-
 test/Makefile.in       |  25 ++--
 15 files changed, 402 insertions(+), 205 deletions(-)
 create mode 100644 examples/test_dace.f90

diff --git a/.gitignore b/.gitignore
index dd84ff7c..4d9c54a6 100644
--- a/.gitignore
+++ b/.gitignore
@@ -34,6 +34,8 @@ Makefile
 # Other files
 *.dSYM
 *.patch
+*~
+*#
 .DS_Store
 .autotools
 .cproject
@@ -41,4 +43,3 @@ Makefile
 .settings
 /build
 Doxyfile.bak
-
diff --git a/Makefile.in b/Makefile.in
index e236e1fc..e02e7303 100644
--- a/Makefile.in
+++ b/Makefile.in
@@ -171,7 +171,8 @@ 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/install-sh config/ltmain.sh config/missing
+	config/depcomp config/install-sh config/ltmain.sh \
+	config/missing
 DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
 distdir = $(PACKAGE)-$(VERSION)
 top_distdir = $(distdir)
@@ -355,6 +356,7 @@ pdfdir = @pdfdir@
 prefix = @prefix@
 program_transform_name = @program_transform_name@
 psdir = @psdir@
+runstatedir = @runstatedir@
 sbindir = @sbindir@
 sharedstatedir = @sharedstatedir@
 srcdir = @srcdir@
diff --git a/configure b/configure
index 9d180c4a..78ab3f5f 100755
--- a/configure
+++ b/configure
@@ -796,6 +796,7 @@ infodir
 docdir
 oldincludedir
 includedir
+runstatedir
 localstatedir
 sharedstatedir
 sysconfdir
@@ -900,6 +901,7 @@ 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}'
@@ -1152,6 +1154,15 @@ 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=* \
@@ -1289,7 +1300,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
+		libdir localedir mandir runstatedir
 do
   eval ac_val=\$$ac_var
   # Remove trailing slashes.
@@ -1442,6 +1453,7 @@ 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]
diff --git a/doc/Makefile.in b/doc/Makefile.in
index 0ce46f95..bba47dea 100644
--- a/doc/Makefile.in
+++ b/doc/Makefile.in
@@ -268,6 +268,7 @@ pdfdir = @pdfdir@
 prefix = @prefix@
 program_transform_name = @program_transform_name@
 psdir = @psdir@
+runstatedir = @runstatedir@
 sbindir = @sbindir@
 sharedstatedir = @sharedstatedir@
 srcdir = @srcdir@
diff --git a/examples/.gitignore b/examples/.gitignore
index 75901923..00530f19 100644
--- a/examples/.gitignore
+++ b/examples/.gitignore
@@ -1 +1,18 @@
-/tas
+tas
+callback_test
+comp_weights
+duration
+example
+example_hl
+iconatm
+iconoce
+iconoce_hl
+model_integration
+modulo
+output_control
+recurrence
+repetitor
+simulate_iau
+test_dace
+time_calculus
+uniq
diff --git a/examples/Makefile.am b/examples/Makefile.am
index 930f75b7..70fbeb72 100644
--- a/examples/Makefile.am
+++ b/examples/Makefile.am
@@ -1,22 +1,23 @@
 if ENABLE_EXAMPLES
 noinst_PROGRAMS =       \
-    callback_test.x     \
-    comp_weights.x      \
-    duration.x          \
-    example.x           \
-    example_hl.x        \
-    iconatm.x           \
-    iconoce.x           \
-    iconoce_hl.x        \
-    model_integration.x \
-    modulo.x            \
-    output_control.x    \
-    recurrence.x        \
-    repetitor.x         \
-    simulate_iau.x      \
-    tas.x               \
-    time_calculus.x     \
-    uniq.x
+    callback_test     \
+    comp_weights      \
+    duration          \
+    example           \
+    example_hl        \
+    iconatm           \
+    iconoce           \
+    iconoce_hl        \
+    model_integration \
+    modulo            \
+    output_control    \
+    recurrence        \
+    repetitor         \
+    simulate_iau      \
+    tas               \
+    time_calculus     \
+    uniq              \
+    test_dace
 endif ENABLE_EXAMPLES
 
 AM_CPPFLAGS = -I$(top_srcdir)/include
@@ -24,13 +25,14 @@ AM_FCFLAGS = $(FCMODINC)$(top_builddir)/src
 LDADD = $(top_builddir)/src/libmtime.la
 
 AM_DEFAULT_SOURCE_EXT = .f90
-duration_x_SOURCES = duration.f90 mo_kind.f90
-iconatm_x_SOURCES = iconatm.f90 mo_event_manager.f90
-iconoce_x_SOURCES = iconoce.f90 mo_event_manager.f90
-model_integration_x_SOURCES = model_integration.c
-modulo_x_SOURCES = modulo.c
-recurrence_x_SOURCES = recurrence.c
-time_calculus_x_SOURCES = time_calculus.c
+duration_SOURCES = duration.f90 mo_kind.f90
+iconatm_SOURCES = iconatm.f90 mo_event_manager.f90
+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
 
 if FCMODUC
 mo_event_manager_mod = MO_EVENT_MANAGER.$(FCMODEXT)
@@ -70,7 +72,8 @@ output_control.$(OBJEXT)   \
 repetitor.$(OBJEXT)        \
 simulate_iau.$(OBJEXT)     \
 tas.$(OBJEXT)              \
-uniq.$(OBJEXT): $(top_builddir)/src/$(mtime_mod)
+uniq.$(OBJEXT)             \
+test_dace.$(OBJEXT): $(top_builddir)/src/$(mtime_mod)
 
 example_hl.$(OBJEXT)   \
 iconoce_hl.$(OBJEXT)   \
@@ -81,7 +84,8 @@ duration.$(OBJEXT):                               \
     $(top_builddir)/src/$(mtime_error_handling_mod)
 
 iconatm.$(OBJEXT) \
-iconoce.$(OBJEXT): $(mo_event_manager_mod)
+iconoce.$(OBJEXT) \
+test_dace.$(OBJEXT): $(mo_event_manager_mod)
 
 MOSTLYCLEANFILES = $(mo_event_manager_mod) $(mo_exception_mod) $(mo_kind_mod)
 
diff --git a/examples/Makefile.in b/examples/Makefile.in
index 12e62e32..c60195b0 100644
--- a/examples/Makefile.in
+++ b/examples/Makefile.in
@@ -88,18 +88,17 @@ PRE_UNINSTALL = :
 POST_UNINSTALL = :
 build_triplet = @build@
 host_triplet = @host@
-@ENABLE_EXAMPLES_TRUE@noinst_PROGRAMS = callback_test.x$(EXEEXT) \
-@ENABLE_EXAMPLES_TRUE@	comp_weights.x$(EXEEXT) \
-@ENABLE_EXAMPLES_TRUE@	duration.x$(EXEEXT) example.x$(EXEEXT) \
-@ENABLE_EXAMPLES_TRUE@	example_hl.x$(EXEEXT) iconatm.x$(EXEEXT) \
-@ENABLE_EXAMPLES_TRUE@	iconoce.x$(EXEEXT) iconoce_hl.x$(EXEEXT) \
-@ENABLE_EXAMPLES_TRUE@	model_integration.x$(EXEEXT) \
-@ENABLE_EXAMPLES_TRUE@	modulo.x$(EXEEXT) \
-@ENABLE_EXAMPLES_TRUE@	output_control.x$(EXEEXT) \
-@ENABLE_EXAMPLES_TRUE@	recurrence.x$(EXEEXT) \
-@ENABLE_EXAMPLES_TRUE@	repetitor.x$(EXEEXT) \
-@ENABLE_EXAMPLES_TRUE@	simulate_iau.x$(EXEEXT) tas.x$(EXEEXT) \
-@ENABLE_EXAMPLES_TRUE@	time_calculus.x$(EXEEXT) uniq.x$(EXEEXT)
+@ENABLE_EXAMPLES_TRUE@noinst_PROGRAMS = callback_test$(EXEEXT) \
+@ENABLE_EXAMPLES_TRUE@	comp_weights$(EXEEXT) duration$(EXEEXT) \
+@ENABLE_EXAMPLES_TRUE@	example$(EXEEXT) example_hl$(EXEEXT) \
+@ENABLE_EXAMPLES_TRUE@	iconatm$(EXEEXT) iconoce$(EXEEXT) \
+@ENABLE_EXAMPLES_TRUE@	iconoce_hl$(EXEEXT) \
+@ENABLE_EXAMPLES_TRUE@	model_integration$(EXEEXT) \
+@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)
 subdir = examples
 ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
 am__aclocal_m4_deps = $(top_srcdir)/m4/acx_fc_module.m4 \
@@ -117,78 +116,82 @@ CONFIG_HEADER = $(top_builddir)/config/config.h
 CONFIG_CLEAN_FILES =
 CONFIG_CLEAN_VPATH_FILES =
 PROGRAMS = $(noinst_PROGRAMS)
-callback_test_x_SOURCES = callback_test.f90
-callback_test_x_OBJECTS = callback_test.$(OBJEXT)
-callback_test_x_LDADD = $(LDADD)
-callback_test_x_DEPENDENCIES = $(top_builddir)/src/libmtime.la
+callback_test_SOURCES = callback_test.f90
+callback_test_OBJECTS = callback_test.$(OBJEXT)
+callback_test_LDADD = $(LDADD)
+callback_test_DEPENDENCIES = $(top_builddir)/src/libmtime.la
 AM_V_lt = $(am__v_lt_@AM_V@)
 am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@)
 am__v_lt_0 = --silent
 am__v_lt_1 = 
-comp_weights_x_SOURCES = comp_weights.f90
-comp_weights_x_OBJECTS = comp_weights.$(OBJEXT)
-comp_weights_x_LDADD = $(LDADD)
-comp_weights_x_DEPENDENCIES = $(top_builddir)/src/libmtime.la
-am_duration_x_OBJECTS = duration.$(OBJEXT) mo_kind.$(OBJEXT)
-duration_x_OBJECTS = $(am_duration_x_OBJECTS)
-duration_x_LDADD = $(LDADD)
-duration_x_DEPENDENCIES = $(top_builddir)/src/libmtime.la
-example_x_SOURCES = example.f90
-example_x_OBJECTS = example.$(OBJEXT)
-example_x_LDADD = $(LDADD)
-example_x_DEPENDENCIES = $(top_builddir)/src/libmtime.la
-example_hl_x_SOURCES = example_hl.f90
-example_hl_x_OBJECTS = example_hl.$(OBJEXT)
-example_hl_x_LDADD = $(LDADD)
-example_hl_x_DEPENDENCIES = $(top_builddir)/src/libmtime.la
-am_iconatm_x_OBJECTS = iconatm.$(OBJEXT) mo_event_manager.$(OBJEXT)
-iconatm_x_OBJECTS = $(am_iconatm_x_OBJECTS)
-iconatm_x_LDADD = $(LDADD)
-iconatm_x_DEPENDENCIES = $(top_builddir)/src/libmtime.la
-am_iconoce_x_OBJECTS = iconoce.$(OBJEXT) mo_event_manager.$(OBJEXT)
-iconoce_x_OBJECTS = $(am_iconoce_x_OBJECTS)
-iconoce_x_LDADD = $(LDADD)
-iconoce_x_DEPENDENCIES = $(top_builddir)/src/libmtime.la
-iconoce_hl_x_SOURCES = iconoce_hl.f90
-iconoce_hl_x_OBJECTS = iconoce_hl.$(OBJEXT)
-iconoce_hl_x_LDADD = $(LDADD)
-iconoce_hl_x_DEPENDENCIES = $(top_builddir)/src/libmtime.la
-am_model_integration_x_OBJECTS = model_integration.$(OBJEXT)
-model_integration_x_OBJECTS = $(am_model_integration_x_OBJECTS)
-model_integration_x_LDADD = $(LDADD)
-model_integration_x_DEPENDENCIES = $(top_builddir)/src/libmtime.la
-am_modulo_x_OBJECTS = modulo.$(OBJEXT)
-modulo_x_OBJECTS = $(am_modulo_x_OBJECTS)
-modulo_x_LDADD = $(LDADD)
-modulo_x_DEPENDENCIES = $(top_builddir)/src/libmtime.la
-output_control_x_SOURCES = output_control.f90
-output_control_x_OBJECTS = output_control.$(OBJEXT)
-output_control_x_LDADD = $(LDADD)
-output_control_x_DEPENDENCIES = $(top_builddir)/src/libmtime.la
-am_recurrence_x_OBJECTS = recurrence.$(OBJEXT)
-recurrence_x_OBJECTS = $(am_recurrence_x_OBJECTS)
-recurrence_x_LDADD = $(LDADD)
-recurrence_x_DEPENDENCIES = $(top_builddir)/src/libmtime.la
-repetitor_x_SOURCES = repetitor.f90
-repetitor_x_OBJECTS = repetitor.$(OBJEXT)
-repetitor_x_LDADD = $(LDADD)
-repetitor_x_DEPENDENCIES = $(top_builddir)/src/libmtime.la
-simulate_iau_x_SOURCES = simulate_iau.f90
-simulate_iau_x_OBJECTS = simulate_iau.$(OBJEXT)
-simulate_iau_x_LDADD = $(LDADD)
-simulate_iau_x_DEPENDENCIES = $(top_builddir)/src/libmtime.la
-tas_x_SOURCES = tas.f90
-tas_x_OBJECTS = tas.$(OBJEXT)
-tas_x_LDADD = $(LDADD)
-tas_x_DEPENDENCIES = $(top_builddir)/src/libmtime.la
-am_time_calculus_x_OBJECTS = time_calculus.$(OBJEXT)
-time_calculus_x_OBJECTS = $(am_time_calculus_x_OBJECTS)
-time_calculus_x_LDADD = $(LDADD)
-time_calculus_x_DEPENDENCIES = $(top_builddir)/src/libmtime.la
-uniq_x_SOURCES = uniq.f90
-uniq_x_OBJECTS = uniq.$(OBJEXT)
-uniq_x_LDADD = $(LDADD)
-uniq_x_DEPENDENCIES = $(top_builddir)/src/libmtime.la
+comp_weights_SOURCES = comp_weights.f90
+comp_weights_OBJECTS = comp_weights.$(OBJEXT)
+comp_weights_LDADD = $(LDADD)
+comp_weights_DEPENDENCIES = $(top_builddir)/src/libmtime.la
+am_duration_OBJECTS = duration.$(OBJEXT) mo_kind.$(OBJEXT)
+duration_OBJECTS = $(am_duration_OBJECTS)
+duration_LDADD = $(LDADD)
+duration_DEPENDENCIES = $(top_builddir)/src/libmtime.la
+example_SOURCES = example.f90
+example_OBJECTS = example.$(OBJEXT)
+example_LDADD = $(LDADD)
+example_DEPENDENCIES = $(top_builddir)/src/libmtime.la
+example_hl_SOURCES = example_hl.f90
+example_hl_OBJECTS = example_hl.$(OBJEXT)
+example_hl_LDADD = $(LDADD)
+example_hl_DEPENDENCIES = $(top_builddir)/src/libmtime.la
+am_iconatm_OBJECTS = iconatm.$(OBJEXT) mo_event_manager.$(OBJEXT)
+iconatm_OBJECTS = $(am_iconatm_OBJECTS)
+iconatm_LDADD = $(LDADD)
+iconatm_DEPENDENCIES = $(top_builddir)/src/libmtime.la
+am_iconoce_OBJECTS = iconoce.$(OBJEXT) mo_event_manager.$(OBJEXT)
+iconoce_OBJECTS = $(am_iconoce_OBJECTS)
+iconoce_LDADD = $(LDADD)
+iconoce_DEPENDENCIES = $(top_builddir)/src/libmtime.la
+iconoce_hl_SOURCES = iconoce_hl.f90
+iconoce_hl_OBJECTS = iconoce_hl.$(OBJEXT)
+iconoce_hl_LDADD = $(LDADD)
+iconoce_hl_DEPENDENCIES = $(top_builddir)/src/libmtime.la
+am_model_integration_OBJECTS = model_integration.$(OBJEXT)
+model_integration_OBJECTS = $(am_model_integration_OBJECTS)
+model_integration_LDADD = $(LDADD)
+model_integration_DEPENDENCIES = $(top_builddir)/src/libmtime.la
+am_modulo_OBJECTS = modulo.$(OBJEXT)
+modulo_OBJECTS = $(am_modulo_OBJECTS)
+modulo_LDADD = $(LDADD)
+modulo_DEPENDENCIES = $(top_builddir)/src/libmtime.la
+output_control_SOURCES = output_control.f90
+output_control_OBJECTS = output_control.$(OBJEXT)
+output_control_LDADD = $(LDADD)
+output_control_DEPENDENCIES = $(top_builddir)/src/libmtime.la
+am_recurrence_OBJECTS = recurrence.$(OBJEXT)
+recurrence_OBJECTS = $(am_recurrence_OBJECTS)
+recurrence_LDADD = $(LDADD)
+recurrence_DEPENDENCIES = $(top_builddir)/src/libmtime.la
+repetitor_SOURCES = repetitor.f90
+repetitor_OBJECTS = repetitor.$(OBJEXT)
+repetitor_LDADD = $(LDADD)
+repetitor_DEPENDENCIES = $(top_builddir)/src/libmtime.la
+simulate_iau_SOURCES = simulate_iau.f90
+simulate_iau_OBJECTS = simulate_iau.$(OBJEXT)
+simulate_iau_LDADD = $(LDADD)
+simulate_iau_DEPENDENCIES = $(top_builddir)/src/libmtime.la
+tas_SOURCES = tas.f90
+tas_OBJECTS = tas.$(OBJEXT)
+tas_LDADD = $(LDADD)
+tas_DEPENDENCIES = $(top_builddir)/src/libmtime.la
+am_test_dace_OBJECTS = test_dace.$(OBJEXT) mo_event_manager.$(OBJEXT)
+test_dace_OBJECTS = $(am_test_dace_OBJECTS)
+test_dace_LDADD = $(LDADD)
+test_dace_DEPENDENCIES = $(top_builddir)/src/libmtime.la
+am_time_calculus_OBJECTS = time_calculus.$(OBJEXT)
+time_calculus_OBJECTS = $(am_time_calculus_OBJECTS)
+time_calculus_LDADD = $(LDADD)
+time_calculus_DEPENDENCIES = $(top_builddir)/src/libmtime.la
+uniq_SOURCES = uniq.f90
+uniq_OBJECTS = uniq.$(OBJEXT)
+uniq_LDADD = $(LDADD)
+uniq_DEPENDENCIES = $(top_builddir)/src/libmtime.la
 AM_V_P = $(am__v_P_@AM_V@)
 am__v_P_ = $(am__v_P_@AM_DEFAULT_V@)
 am__v_P_0 = false
@@ -241,18 +244,18 @@ AM_V_FCLD = $(am__v_FCLD_@AM_V@)
 am__v_FCLD_ = $(am__v_FCLD_@AM_DEFAULT_V@)
 am__v_FCLD_0 = @echo "  FCLD    " $@;
 am__v_FCLD_1 = 
-SOURCES = callback_test.f90 comp_weights.f90 $(duration_x_SOURCES) \
-	example.f90 example_hl.f90 $(iconatm_x_SOURCES) \
-	$(iconoce_x_SOURCES) iconoce_hl.f90 \
-	$(model_integration_x_SOURCES) $(modulo_x_SOURCES) \
-	output_control.f90 $(recurrence_x_SOURCES) repetitor.f90 \
-	simulate_iau.f90 tas.f90 $(time_calculus_x_SOURCES) uniq.f90
-DIST_SOURCES = callback_test.f90 comp_weights.f90 \
-	$(duration_x_SOURCES) example.f90 example_hl.f90 \
-	$(iconatm_x_SOURCES) $(iconoce_x_SOURCES) iconoce_hl.f90 \
-	$(model_integration_x_SOURCES) $(modulo_x_SOURCES) \
-	output_control.f90 $(recurrence_x_SOURCES) repetitor.f90 \
-	simulate_iau.f90 tas.f90 $(time_calculus_x_SOURCES) uniq.f90
+SOURCES = callback_test.f90 comp_weights.f90 $(duration_SOURCES) \
+	example.f90 example_hl.f90 $(iconatm_SOURCES) \
+	$(iconoce_SOURCES) iconoce_hl.f90 $(model_integration_SOURCES) \
+	$(modulo_SOURCES) output_control.f90 $(recurrence_SOURCES) \
+	repetitor.f90 simulate_iau.f90 tas.f90 $(test_dace_SOURCES) \
+	$(time_calculus_SOURCES) uniq.f90
+DIST_SOURCES = callback_test.f90 comp_weights.f90 $(duration_SOURCES) \
+	example.f90 example_hl.f90 $(iconatm_SOURCES) \
+	$(iconoce_SOURCES) iconoce_hl.f90 $(model_integration_SOURCES) \
+	$(modulo_SOURCES) output_control.f90 $(recurrence_SOURCES) \
+	repetitor.f90 simulate_iau.f90 tas.f90 $(test_dace_SOURCES) \
+	$(time_calculus_SOURCES) uniq.f90
 am__can_run_installinfo = \
   case $$AM_UPDATE_INFO_DIR in \
     n|no|NO) false;; \
@@ -422,6 +425,7 @@ pdfdir = @pdfdir@
 prefix = @prefix@
 program_transform_name = @program_transform_name@
 psdir = @psdir@
+runstatedir = @runstatedir@
 sbindir = @sbindir@
 sharedstatedir = @sharedstatedir@
 srcdir = @srcdir@
@@ -434,13 +438,14 @@ AM_CPPFLAGS = -I$(top_srcdir)/include
 AM_FCFLAGS = $(FCMODINC)$(top_builddir)/src
 LDADD = $(top_builddir)/src/libmtime.la
 AM_DEFAULT_SOURCE_EXT = .f90
-duration_x_SOURCES = duration.f90 mo_kind.f90
-iconatm_x_SOURCES = iconatm.f90 mo_event_manager.f90
-iconoce_x_SOURCES = iconoce.f90 mo_event_manager.f90
-model_integration_x_SOURCES = model_integration.c
-modulo_x_SOURCES = modulo.c
-recurrence_x_SOURCES = recurrence.c
-time_calculus_x_SOURCES = time_calculus.c
+duration_SOURCES = duration.f90 mo_kind.f90
+iconatm_SOURCES = iconatm.f90 mo_event_manager.f90
+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
 @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)
@@ -497,73 +502,77 @@ clean-noinstPROGRAMS:
 	echo " rm -f" $$list; \
 	rm -f $$list
 
-callback_test.x$(EXEEXT): $(callback_test_x_OBJECTS) $(callback_test_x_DEPENDENCIES) $(EXTRA_callback_test_x_DEPENDENCIES) 
-	@rm -f callback_test.x$(EXEEXT)
-	$(AM_V_FCLD)$(FCLINK) $(callback_test_x_OBJECTS) $(callback_test_x_LDADD) $(LIBS)
+callback_test$(EXEEXT): $(callback_test_OBJECTS) $(callback_test_DEPENDENCIES) $(EXTRA_callback_test_DEPENDENCIES) 
+	@rm -f callback_test$(EXEEXT)
+	$(AM_V_FCLD)$(FCLINK) $(callback_test_OBJECTS) $(callback_test_LDADD) $(LIBS)
 
-comp_weights.x$(EXEEXT): $(comp_weights_x_OBJECTS) $(comp_weights_x_DEPENDENCIES) $(EXTRA_comp_weights_x_DEPENDENCIES) 
-	@rm -f comp_weights.x$(EXEEXT)
-	$(AM_V_FCLD)$(FCLINK) $(comp_weights_x_OBJECTS) $(comp_weights_x_LDADD) $(LIBS)
+comp_weights$(EXEEXT): $(comp_weights_OBJECTS) $(comp_weights_DEPENDENCIES) $(EXTRA_comp_weights_DEPENDENCIES) 
+	@rm -f comp_weights$(EXEEXT)
+	$(AM_V_FCLD)$(FCLINK) $(comp_weights_OBJECTS) $(comp_weights_LDADD) $(LIBS)
 
-duration.x$(EXEEXT): $(duration_x_OBJECTS) $(duration_x_DEPENDENCIES) $(EXTRA_duration_x_DEPENDENCIES) 
-	@rm -f duration.x$(EXEEXT)
-	$(AM_V_FCLD)$(FCLINK) $(duration_x_OBJECTS) $(duration_x_LDADD) $(LIBS)
+duration$(EXEEXT): $(duration_OBJECTS) $(duration_DEPENDENCIES) $(EXTRA_duration_DEPENDENCIES) 
+	@rm -f duration$(EXEEXT)
+	$(AM_V_FCLD)$(FCLINK) $(duration_OBJECTS) $(duration_LDADD) $(LIBS)
 
-example.x$(EXEEXT): $(example_x_OBJECTS) $(example_x_DEPENDENCIES) $(EXTRA_example_x_DEPENDENCIES) 
-	@rm -f example.x$(EXEEXT)
-	$(AM_V_FCLD)$(FCLINK) $(example_x_OBJECTS) $(example_x_LDADD) $(LIBS)
+example$(EXEEXT): $(example_OBJECTS) $(example_DEPENDENCIES) $(EXTRA_example_DEPENDENCIES) 
+	@rm -f example$(EXEEXT)
+	$(AM_V_FCLD)$(FCLINK) $(example_OBJECTS) $(example_LDADD) $(LIBS)
 
-example_hl.x$(EXEEXT): $(example_hl_x_OBJECTS) $(example_hl_x_DEPENDENCIES) $(EXTRA_example_hl_x_DEPENDENCIES) 
-	@rm -f example_hl.x$(EXEEXT)
-	$(AM_V_FCLD)$(FCLINK) $(example_hl_x_OBJECTS) $(example_hl_x_LDADD) $(LIBS)
+example_hl$(EXEEXT): $(example_hl_OBJECTS) $(example_hl_DEPENDENCIES) $(EXTRA_example_hl_DEPENDENCIES) 
+	@rm -f example_hl$(EXEEXT)
+	$(AM_V_FCLD)$(FCLINK) $(example_hl_OBJECTS) $(example_hl_LDADD) $(LIBS)
 
-iconatm.x$(EXEEXT): $(iconatm_x_OBJECTS) $(iconatm_x_DEPENDENCIES) $(EXTRA_iconatm_x_DEPENDENCIES) 
-	@rm -f iconatm.x$(EXEEXT)
-	$(AM_V_FCLD)$(FCLINK) $(iconatm_x_OBJECTS) $(iconatm_x_LDADD) $(LIBS)
+iconatm$(EXEEXT): $(iconatm_OBJECTS) $(iconatm_DEPENDENCIES) $(EXTRA_iconatm_DEPENDENCIES) 
+	@rm -f iconatm$(EXEEXT)
+	$(AM_V_FCLD)$(FCLINK) $(iconatm_OBJECTS) $(iconatm_LDADD) $(LIBS)
 
-iconoce.x$(EXEEXT): $(iconoce_x_OBJECTS) $(iconoce_x_DEPENDENCIES) $(EXTRA_iconoce_x_DEPENDENCIES) 
-	@rm -f iconoce.x$(EXEEXT)
-	$(AM_V_FCLD)$(FCLINK) $(iconoce_x_OBJECTS) $(iconoce_x_LDADD) $(LIBS)
+iconoce$(EXEEXT): $(iconoce_OBJECTS) $(iconoce_DEPENDENCIES) $(EXTRA_iconoce_DEPENDENCIES) 
+	@rm -f iconoce$(EXEEXT)
+	$(AM_V_FCLD)$(FCLINK) $(iconoce_OBJECTS) $(iconoce_LDADD) $(LIBS)
 
-iconoce_hl.x$(EXEEXT): $(iconoce_hl_x_OBJECTS) $(iconoce_hl_x_DEPENDENCIES) $(EXTRA_iconoce_hl_x_DEPENDENCIES) 
-	@rm -f iconoce_hl.x$(EXEEXT)
-	$(AM_V_FCLD)$(FCLINK) $(iconoce_hl_x_OBJECTS) $(iconoce_hl_x_LDADD) $(LIBS)
+iconoce_hl$(EXEEXT): $(iconoce_hl_OBJECTS) $(iconoce_hl_DEPENDENCIES) $(EXTRA_iconoce_hl_DEPENDENCIES) 
+	@rm -f iconoce_hl$(EXEEXT)
+	$(AM_V_FCLD)$(FCLINK) $(iconoce_hl_OBJECTS) $(iconoce_hl_LDADD) $(LIBS)
 
-model_integration.x$(EXEEXT): $(model_integration_x_OBJECTS) $(model_integration_x_DEPENDENCIES) $(EXTRA_model_integration_x_DEPENDENCIES) 
-	@rm -f model_integration.x$(EXEEXT)
-	$(AM_V_CCLD)$(LINK) $(model_integration_x_OBJECTS) $(model_integration_x_LDADD) $(LIBS)
+model_integration$(EXEEXT): $(model_integration_OBJECTS) $(model_integration_DEPENDENCIES) $(EXTRA_model_integration_DEPENDENCIES) 
+	@rm -f model_integration$(EXEEXT)
+	$(AM_V_CCLD)$(LINK) $(model_integration_OBJECTS) $(model_integration_LDADD) $(LIBS)
 
-modulo.x$(EXEEXT): $(modulo_x_OBJECTS) $(modulo_x_DEPENDENCIES) $(EXTRA_modulo_x_DEPENDENCIES) 
-	@rm -f modulo.x$(EXEEXT)
-	$(AM_V_CCLD)$(LINK) $(modulo_x_OBJECTS) $(modulo_x_LDADD) $(LIBS)
+modulo$(EXEEXT): $(modulo_OBJECTS) $(modulo_DEPENDENCIES) $(EXTRA_modulo_DEPENDENCIES) 
+	@rm -f modulo$(EXEEXT)
+	$(AM_V_CCLD)$(LINK) $(modulo_OBJECTS) $(modulo_LDADD) $(LIBS)
 
-output_control.x$(EXEEXT): $(output_control_x_OBJECTS) $(output_control_x_DEPENDENCIES) $(EXTRA_output_control_x_DEPENDENCIES) 
-	@rm -f output_control.x$(EXEEXT)
-	$(AM_V_FCLD)$(FCLINK) $(output_control_x_OBJECTS) $(output_control_x_LDADD) $(LIBS)
+output_control$(EXEEXT): $(output_control_OBJECTS) $(output_control_DEPENDENCIES) $(EXTRA_output_control_DEPENDENCIES) 
+	@rm -f output_control$(EXEEXT)
+	$(AM_V_FCLD)$(FCLINK) $(output_control_OBJECTS) $(output_control_LDADD) $(LIBS)
 
-recurrence.x$(EXEEXT): $(recurrence_x_OBJECTS) $(recurrence_x_DEPENDENCIES) $(EXTRA_recurrence_x_DEPENDENCIES) 
-	@rm -f recurrence.x$(EXEEXT)
-	$(AM_V_CCLD)$(LINK) $(recurrence_x_OBJECTS) $(recurrence_x_LDADD) $(LIBS)
+recurrence$(EXEEXT): $(recurrence_OBJECTS) $(recurrence_DEPENDENCIES) $(EXTRA_recurrence_DEPENDENCIES) 
+	@rm -f recurrence$(EXEEXT)
+	$(AM_V_CCLD)$(LINK) $(recurrence_OBJECTS) $(recurrence_LDADD) $(LIBS)
 
-repetitor.x$(EXEEXT): $(repetitor_x_OBJECTS) $(repetitor_x_DEPENDENCIES) $(EXTRA_repetitor_x_DEPENDENCIES) 
-	@rm -f repetitor.x$(EXEEXT)
-	$(AM_V_FCLD)$(FCLINK) $(repetitor_x_OBJECTS) $(repetitor_x_LDADD) $(LIBS)
+repetitor$(EXEEXT): $(repetitor_OBJECTS) $(repetitor_DEPENDENCIES) $(EXTRA_repetitor_DEPENDENCIES) 
+	@rm -f repetitor$(EXEEXT)
+	$(AM_V_FCLD)$(FCLINK) $(repetitor_OBJECTS) $(repetitor_LDADD) $(LIBS)
 
-simulate_iau.x$(EXEEXT): $(simulate_iau_x_OBJECTS) $(simulate_iau_x_DEPENDENCIES) $(EXTRA_simulate_iau_x_DEPENDENCIES) 
-	@rm -f simulate_iau.x$(EXEEXT)
-	$(AM_V_FCLD)$(FCLINK) $(simulate_iau_x_OBJECTS) $(simulate_iau_x_LDADD) $(LIBS)
+simulate_iau$(EXEEXT): $(simulate_iau_OBJECTS) $(simulate_iau_DEPENDENCIES) $(EXTRA_simulate_iau_DEPENDENCIES) 
+	@rm -f simulate_iau$(EXEEXT)
+	$(AM_V_FCLD)$(FCLINK) $(simulate_iau_OBJECTS) $(simulate_iau_LDADD) $(LIBS)
 
-tas.x$(EXEEXT): $(tas_x_OBJECTS) $(tas_x_DEPENDENCIES) $(EXTRA_tas_x_DEPENDENCIES) 
-	@rm -f tas.x$(EXEEXT)
-	$(AM_V_FCLD)$(FCLINK) $(tas_x_OBJECTS) $(tas_x_LDADD) $(LIBS)
+tas$(EXEEXT): $(tas_OBJECTS) $(tas_DEPENDENCIES) $(EXTRA_tas_DEPENDENCIES) 
+	@rm -f tas$(EXEEXT)
+	$(AM_V_FCLD)$(FCLINK) $(tas_OBJECTS) $(tas_LDADD) $(LIBS)
 
-time_calculus.x$(EXEEXT): $(time_calculus_x_OBJECTS) $(time_calculus_x_DEPENDENCIES) $(EXTRA_time_calculus_x_DEPENDENCIES) 
-	@rm -f time_calculus.x$(EXEEXT)
-	$(AM_V_CCLD)$(LINK) $(time_calculus_x_OBJECTS) $(time_calculus_x_LDADD) $(LIBS)
+test_dace$(EXEEXT): $(test_dace_OBJECTS) $(test_dace_DEPENDENCIES) $(EXTRA_test_dace_DEPENDENCIES) 
+	@rm -f test_dace$(EXEEXT)
+	$(AM_V_FCLD)$(FCLINK) $(test_dace_OBJECTS) $(test_dace_LDADD) $(LIBS)
 
-uniq.x$(EXEEXT): $(uniq_x_OBJECTS) $(uniq_x_DEPENDENCIES) $(EXTRA_uniq_x_DEPENDENCIES) 
-	@rm -f uniq.x$(EXEEXT)
-	$(AM_V_FCLD)$(FCLINK) $(uniq_x_OBJECTS) $(uniq_x_LDADD) $(LIBS)
+time_calculus$(EXEEXT): $(time_calculus_OBJECTS) $(time_calculus_DEPENDENCIES) $(EXTRA_time_calculus_DEPENDENCIES) 
+	@rm -f time_calculus$(EXEEXT)
+	$(AM_V_CCLD)$(LINK) $(time_calculus_OBJECTS) $(time_calculus_LDADD) $(LIBS)
+
+uniq$(EXEEXT): $(uniq_OBJECTS) $(uniq_DEPENDENCIES) $(EXTRA_uniq_DEPENDENCIES) 
+	@rm -f uniq$(EXEEXT)
+	$(AM_V_FCLD)$(FCLINK) $(uniq_OBJECTS) $(uniq_LDADD) $(LIBS)
 
 mostlyclean-compile:
 	-rm -f *.$(OBJEXT)
@@ -876,7 +885,8 @@ output_control.$(OBJEXT)   \
 repetitor.$(OBJEXT)        \
 simulate_iau.$(OBJEXT)     \
 tas.$(OBJEXT)              \
-uniq.$(OBJEXT): $(top_builddir)/src/$(mtime_mod)
+uniq.$(OBJEXT)             \
+test_dace.$(OBJEXT): $(top_builddir)/src/$(mtime_mod)
 
 example_hl.$(OBJEXT)   \
 iconoce_hl.$(OBJEXT)   \
@@ -887,7 +897,8 @@ duration.$(OBJEXT):                               \
     $(top_builddir)/src/$(mtime_error_handling_mod)
 
 iconatm.$(OBJEXT) \
-iconoce.$(OBJEXT): $(mo_event_manager_mod)
+iconoce.$(OBJEXT) \
+test_dace.$(OBJEXT): $(mo_event_manager_mod)
 
 mostlyclean-local:
 	rm -f *.i
diff --git a/examples/test_dace.f90 b/examples/test_dace.f90
new file mode 100644
index 00000000..b35fa613
--- /dev/null
+++ b/examples/test_dace.f90
@@ -0,0 +1,140 @@
+program test_mtime
+
+  use mtime
+  use mo_event_manager
+
+  implicit none
+  
+  character(len=max_timedelta_str_len)   :: td_string
+  character(len=max_datetime_str_len)    :: dt_string
+
+  call setcalendar(proleptic_gregorian)
+  call test1 ()
+  call test2 ()
+  
+contains
+
+  subroutine test1 ()
+
+    type(timedelta),  pointer :: dt, t0, t1, t2, t3
+
+    write (0,*) "test1:"
+
+    dt => newtimedelta("pt24.000s")
+
+    t0 => newtimedelta("pt3600.000s")
+
+    t1 => newtimedelta("pt3600.000s")
+    t2 => newtimedelta("pt60m")
+    t3 => newtimedelta("pt1h")
+
+    t1 =  t1 + dt
+    t2 =  t2 + dt
+    t3 =  t3 + dt
+
+    call timedeltatostring (t0, td_string)
+    write(0,*) "  t0 : ", td_string, "reference"
+    call timedeltatostring (dt, td_string)
+    write(0,*) "  dt : ", td_string, "modification"
+    call timedeltatostring (t1, td_string)
+    write(0,*) "  t1 : ", td_string, "???"
+    call timedeltatostring (t2, td_string)
+    write(0,*) "  t2 : ", td_string, "ok"
+    call timedeltatostring (t3, td_string)
+    write(0,*) "  t3 : ", td_string, "ok"
+  end subroutine test1
+  !-
+  subroutine test2 ()
+
+    type(event),      pointer :: mec_event      => null()
+
+    type(datetime),   pointer :: mec_refdate    => null()
+
+    type(eventgroup), pointer :: mec_eventgroup => null()
+
+    type(datetime),   pointer :: mec_startdate  => null()
+    type(datetime),   pointer :: mec_enddate    => null()
+
+    type(timedelta),  pointer :: mec_start      => null()
+    type(timedelta),  pointer :: mec_stop       => null()
+    type(timedelta),  pointer :: mec_interval   => null()
+
+    type(timedelta),  pointer :: time_step          => null()
+    
+    integer                   :: mec_events
+    integer                   :: ierr
+    logical                   :: lret
+
+    type(datetime),   pointer :: mtime
+
+    integer                   :: i
+
+    ! offset for start from reference date
+    mec_start      => newtimedelta("pt0s")
+    ! offset for stop from reference date
+    mec_stop       => newtimedelta("pt3600s")
+    mec_interval   => newtimedelta("pt300s")
+
+    time_step      => newtimedelta("pt24s")
+
+    mec_refdate    => newdatetime ("2016-05-29t00:00:00.000")
+    mec_startdate  => newdatetime (mec_refdate)
+    mec_enddate    => newdatetime (mec_refdate)
+    mec_startdate  =  mec_startdate + mec_start
+    mec_enddate    =  mec_enddate   + mec_stop
+
+    write (0,*)
+    write (0,*) "test2:"
+    call timedeltatostring (time_step,    td_string)
+    write (0,*) "model time step   : ",   td_string
+    call timedeltatostring (mec_start,    td_string)
+    write (0,*) "mec start time    : ",   td_string
+    call timedeltatostring (mec_stop,     td_string)
+    write (0,*) "mec stop time     : ",   td_string
+    call timedeltatostring (mec_interval, td_string)
+    write (0,*) "mec interval      : ",   td_string
+
+    write (0,*)
+
+    call datetimetostring (mec_refdate,   dt_string)
+    write (0,*) "mec reference date: ",   dt_string
+    call datetimetostring (mec_startdate, dt_string)
+    write (0,*) "mec start date    : ",   dt_string
+    call datetimetostring (mec_enddate,   dt_string)
+    write (0,*) "mec end date      : ",   dt_string
+
+    write (0,*)
+
+    write (0,*) "checking event management"
+
+    call initeventmanager (mec_refdate)
+
+    mec_events     =  addeventgroup('meceventgroup')
+    mec_eventgroup => geteventgroup(mec_events)
+    mec_enddate    =  mec_enddate   + time_step
+    mec_event      => newevent('mec', mec_refdate, mec_startdate, mec_enddate, &
+                                      mec_interval, errno=ierr)
+    lret = addeventtoeventgroup(mec_event, mec_eventgroup)
+    write (0,*) "addeventtoeventgroup returns:", lret
+    call printeventgroup (mec_events)
+
+    mtime => newdatetime (mec_startdate)
+    i = 0
+    do
+      if (iscurrenteventactive (mec_event, mtime, plus_slack=time_step)) then
+        i = i + 1
+        call datetimetostring (mtime, dt_string)
+        write (0,*) "mec will be called on: ", trim (dt_string)
+      end if
+      
+      if (mtime >= mec_enddate) then
+        exit
+      end if
+      mtime = mtime + time_step
+    end do
+    
+    write(0,*) "check_dace_timer: total mec calls:", i, "(expected: 13)"
+    
+  end subroutine test2
+
+end program test_mtime
diff --git a/include/Makefile.in b/include/Makefile.in
index 3f740b50..bc24f7bb 100644
--- a/include/Makefile.in
+++ b/include/Makefile.in
@@ -317,6 +317,7 @@ pdfdir = @pdfdir@
 prefix = @prefix@
 program_transform_name = @program_transform_name@
 psdir = @psdir@
+runstatedir = @runstatedir@
 sbindir = @sbindir@
 sharedstatedir = @sharedstatedir@
 srcdir = @srcdir@
diff --git a/pfunit/.gitignore b/pfunit/.gitignore
index 84f9927d..5dff3052 100644
--- a/pfunit/.gitignore
+++ b/pfunit/.gitignore
@@ -1 +1 @@
-/tests.x
+/tests
diff --git a/pfunit/GNUmakefile b/pfunit/GNUmakefile
index c932c7a1..904bb96b 100644
--- a/pfunit/GNUmakefile
+++ b/pfunit/GNUmakefile
@@ -15,7 +15,7 @@ VPATH = . $(SRC_DIR) $(TEST_DIR)
 # Decide the file extensions.
 include $(PFUNIT)/include/extensions.mk
 
-EXE = tests.x
+EXE = tests
 
 PFUNIT_LIBS = -L$(PFUNIT)/lib -lpfunit 
 PFUNIT_INCL = -I$(PFUNIT)/mod -I$(PFUNIT)/include
@@ -29,7 +29,7 @@ FFLAGS += -I$(INCL_DIR) $(PFUNIT_INCL) $(TEST_INCL) $(PFUNIT_LIBS)
 
 all: clean $(EXE) # Kein Plan, weshalb das clean nötig ist
 	./$(EXE)
-	
+
 $(EXE): testSuites.inc from_example_test.pf tests
 	$(F90) -o $@ $(PFUNIT_DRV) $(TEST_OBJS) $(SRC_OBJS) $(FFLAGS)
 
diff --git a/src/Makefile.in b/src/Makefile.in
index dccee377..7fc54e1b 100644
--- a/src/Makefile.in
+++ b/src/Makefile.in
@@ -381,6 +381,7 @@ pdfdir = @pdfdir@
 prefix = @prefix@
 program_transform_name = @program_transform_name@
 psdir = @psdir@
+runstatedir = @runstatedir@
 sbindir = @sbindir@
 sharedstatedir = @sharedstatedir@
 srcdir = @srcdir@
diff --git a/src/mtime_timedelta.c b/src/mtime_timedelta.c
index d76f583f..9448228b 100644
--- a/src/mtime_timedelta.c
+++ b/src/mtime_timedelta.c
@@ -1991,7 +1991,7 @@ elementwiseAddTimeDeltatoTimeDelta(struct _timedelta* td1, struct _timedelta* td
 
       /*Reset td_return to 0.*/
       memset(td_return,0,sizeof(struct _timedelta));
-      
+
       if(td1->sign == td2->sign)
         {
           /* If signs match, do add. */
@@ -2007,15 +2007,21 @@ elementwiseAddTimeDeltatoTimeDelta(struct _timedelta* td1, struct _timedelta* td
           td_return->second += (td1->second + td2->second);
           if ( td_return->second >= 60 )
             {
-              td_return->second -= 60;
-              td_return->minute += 1;
+	      int remainder, amount;
+	      remainder = td_return->second % 60;
+	      amount    = td_return->second / 60; 
+              td_return->second = remainder;
+              td_return->minute = amount;
             }
 
           td_return->minute += (td1->minute + td2->minute);
           if ( td_return->minute >= 60 )
             {
-              td_return->minute -= 60;
-              td_return->hour += 1;
+	      int remainder, amount;
+	      remainder = td_return->minute % 60;
+	      amount    = td_return->minute / 60; 
+              td_return->minute = remainder;
+              td_return->hour = amount;
             }
 
           td_return->hour += (td1->hour + td2->hour);
diff --git a/test/Makefile.am b/test/Makefile.am
index bd4be7e1..399479d7 100644
--- a/test/Makefile.am
+++ b/test/Makefile.am
@@ -1,12 +1,12 @@
 EXTRA_LTLIBRARIES = libmtime_check.la
-check_PROGRAMS = test_runner.x
-TESTS = test_runner.x
+check_PROGRAMS = test_runner
+TESTS = test_runner
 
 AM_CPPFLAGS = -I$(top_srcdir)/include
 
 if ENABLE_CHECK
 AM_CFLAGS = $(CHECK_CFLAGS)
-test_runner_x_LDADD = libmtime_check.la $(top_builddir)/src/libmtime.la $(CHECK_CLIBS)
+test_runner_LDADD = libmtime_check.la $(top_builddir)/src/libmtime.la $(CHECK_CLIBS)
 endif ENABLE_CHECK
 
 libmtime_check_la_SOURCES = \
diff --git a/test/Makefile.in b/test/Makefile.in
index 366eb09b..3781c832 100644
--- a/test/Makefile.in
+++ b/test/Makefile.in
@@ -87,8 +87,8 @@ PRE_UNINSTALL = :
 POST_UNINSTALL = :
 build_triplet = @build@
 host_triplet = @host@
-check_PROGRAMS = test_runner.x$(EXEEXT)
-TESTS = test_runner.x$(EXEEXT)
+check_PROGRAMS = test_runner$(EXEEXT)
+TESTS = test_runner$(EXEEXT)
 subdir = test
 ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
 am__aclocal_m4_deps = $(top_srcdir)/m4/acx_fc_module.m4 \
@@ -115,10 +115,10 @@ AM_V_lt = $(am__v_lt_@AM_V@)
 am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@)
 am__v_lt_0 = --silent
 am__v_lt_1 = 
-test_runner_x_SOURCES = test_runner.c
-test_runner_x_OBJECTS = test_runner.$(OBJEXT)
+test_runner_SOURCES = test_runner.c
+test_runner_OBJECTS = test_runner.$(OBJEXT)
 am__DEPENDENCIES_1 =
-@ENABLE_CHECK_TRUE@test_runner_x_DEPENDENCIES = libmtime_check.la \
+@ENABLE_CHECK_TRUE@test_runner_DEPENDENCIES = libmtime_check.la \
 @ENABLE_CHECK_TRUE@	$(top_builddir)/src/libmtime.la \
 @ENABLE_CHECK_TRUE@	$(am__DEPENDENCIES_1)
 AM_V_P = $(am__v_P_@AM_V@)
@@ -538,6 +538,7 @@ pdfdir = @pdfdir@
 prefix = @prefix@
 program_transform_name = @program_transform_name@
 psdir = @psdir@
+runstatedir = @runstatedir@
 sbindir = @sbindir@
 sharedstatedir = @sharedstatedir@
 srcdir = @srcdir@
@@ -549,7 +550,7 @@ top_srcdir = @top_srcdir@
 EXTRA_LTLIBRARIES = libmtime_check.la
 AM_CPPFLAGS = -I$(top_srcdir)/include
 @ENABLE_CHECK_TRUE@AM_CFLAGS = $(CHECK_CFLAGS)
-@ENABLE_CHECK_TRUE@test_runner_x_LDADD = libmtime_check.la $(top_builddir)/src/libmtime.la $(CHECK_CLIBS)
+@ENABLE_CHECK_TRUE@test_runner_LDADD = libmtime_check.la $(top_builddir)/src/libmtime.la $(CHECK_CLIBS)
 libmtime_check_la_SOURCES = \
     mtime_calendar_test.c   \
     mtime_calendar_test.h   \
@@ -611,9 +612,9 @@ clean-checkPROGRAMS:
 libmtime_check.la: $(libmtime_check_la_OBJECTS) $(libmtime_check_la_DEPENDENCIES) $(EXTRA_libmtime_check_la_DEPENDENCIES) 
 	$(AM_V_CCLD)$(LINK)  $(libmtime_check_la_OBJECTS) $(libmtime_check_la_LIBADD) $(LIBS)
 
-test_runner.x$(EXEEXT): $(test_runner_x_OBJECTS) $(test_runner_x_DEPENDENCIES) $(EXTRA_test_runner_x_DEPENDENCIES) 
-	@rm -f test_runner.x$(EXEEXT)
-	$(AM_V_CCLD)$(LINK) $(test_runner_x_OBJECTS) $(test_runner_x_LDADD) $(LIBS)
+test_runner$(EXEEXT): $(test_runner_OBJECTS) $(test_runner_DEPENDENCIES) $(EXTRA_test_runner_DEPENDENCIES) 
+	@rm -f test_runner$(EXEEXT)
+	$(AM_V_CCLD)$(LINK) $(test_runner_OBJECTS) $(test_runner_LDADD) $(LIBS)
 
 mostlyclean-compile:
 	-rm -f *.$(OBJEXT)
@@ -859,9 +860,9 @@ recheck: all $(check_PROGRAMS)
 	        am__force_recheck=am--force-recheck \
 	        TEST_LOGS="$$log_list"; \
 	exit $$?
-test_runner.x.log: test_runner.x$(EXEEXT)
-	@p='test_runner.x$(EXEEXT)'; \
-	b='test_runner.x'; \
+test_runner.log: test_runner$(EXEEXT)
+	@p='test_runner$(EXEEXT)'; \
+	b='test_runner'; \
 	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
 	--log-file $$b.log --trs-file $$b.trs \
 	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
-- 
GitLab