diff --git a/src/libmtime_hl.f90 b/src/libmtime_hl.f90
index 63dbc7dea6a244d58b5065aaf165f84f2b36dfc9..f15c1150665b2aaf8458a4a408c12eef331c1d22 100644
--- a/src/libmtime_hl.f90
+++ b/src/libmtime_hl.f90
@@ -31,11 +31,23 @@ module mtime_hl
   contains
 
     ! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+    !
     ! The use of "final" is "potentially" dangerous - it is supported,
     ! e.g., on gfortran 4.9 only partially.  (see
     ! http://fortranwiki.org/fortran/show/Fortran+2003+status)
+    !
     ! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
-!    final :: t_datetime_deallocate
+    !
+    ! final is required to prevent memory leaks, when variables go out
+    ! of scope. So this routine will get called only in this case and
+    ! the call is introduced by the compiler - nobody will see those. 
+    ! So I will reenable the final but not for gcc odler than gcc5.
+    !
+    ! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+
+#if __GNUC__ > 4
+    final :: t_datetime_deallocate
+#endif
     
     procedure :: to_string                 => t_datetime_to_string
     procedure :: assign_string             => t_datetime_assign_string
@@ -73,8 +85,9 @@ module mtime_hl
 
   contains
 
-!    final :: t_timedelta_deallocate
-    
+#if __GNUC__ > 4
+    final :: t_timedelta_deallocate
+#endif
     procedure :: to_string        => t_timedelta_to_string
     procedure :: assign_string    => t_timedelta_assign_string
 
@@ -85,13 +98,20 @@ module mtime_hl
 contains 
 
   ! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+  !
   ! In my opinion, this deallocate does not make sense, since the
   ! this%dt data member is a simply derived type (with C conforming
   ! kind values). The necessary deallocates happen in the wrapper
   ! routines, where a POINTER variable is used and its contents are
   ! copied to this%dt.
+  !
   ! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
   !
+  ! You're right, but this routine is just the implementation of
+  ! final, and no user should call it explicitly! BUt of course,
+  ! you need to make the call available.
+  !
+  ! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
   ! 
   subroutine t_datetime_deallocate(this)
     type(t_datetime), target, intent(inout) :: this