diff --git a/include/mtime_iso8601.h b/include/mtime_iso8601.h
index 7518d1a8a1ab84b3e1634902ba1ef19aeb36ea62..c040c062addd60779f5b4a7711b5775f2250121f 100644
--- a/include/mtime_iso8601.h
+++ b/include/mtime_iso8601.h
@@ -31,7 +31,7 @@ typedef enum
 
 struct iso8601_duration
 {
-  bool 		flag_std_form;
+  int 		flag_std_form;
   char 		sign;
   int64_t 	year;
   int 		month;
diff --git a/include/mtime_timedelta.h b/include/mtime_timedelta.h
index 2f2c2588d1d9b163d82fef5e694c9d746652a724..9fb11fbeed9c54dc98d970c7b530b2e905cda6a2 100644
--- a/include/mtime_timedelta.h
+++ b/include/mtime_timedelta.h
@@ -36,7 +36,7 @@ struct _juliandelta;
 
 struct _timedelta
 {
-  bool          flag_std_form; ///< Is timedelta formatted in standard form (eg. PT30M10S) or long form (eg. PT3000S)? 
+  int          flag_std_form; ///< Is timedelta formatted in standard form (eg. PT30M10S) or long form (eg. PT3000S)? 
   char 		sign;	///< sign of time delta. Sign can be '+' or '-'.
 
   int64_t 	year;	///< Year part of timedelta.
diff --git a/src/libmtime.f90 b/src/libmtime.f90
index 81d2f024ffbd2e827d3bcc736df6b9d04742cac0..b7272a4b1d4fcfbdd95ddb7b3e6e27f715c07b1c 100644
--- a/src/libmtime.f90
+++ b/src/libmtime.f90
@@ -957,6 +957,7 @@ contains
     call c_f_pointer(c_pointer, dest)
   end function newdatetimefromconstructandcopy
 
+
   ! @return Minimum of two date time. In case of equality we return @p a.
   !
   ! @note This function does not return a copy of one of the arguments
@@ -1351,6 +1352,7 @@ module mtime_timedelta
   integer, parameter :: max_timedelta_str_len = 32
   !
   type, bind(c) :: timedelta
+    integer(c_int) :: flag_std_form
     character(c_char) :: sign
     integer(c_int64_t) :: year
     integer(c_int) :: month
diff --git a/src/mtime_iso8601.c b/src/mtime_iso8601.c
index 5e6b85c24c66768131875d5c4adb0c6307b8e24e..45049cb47fc5ed2df54c2d39115e908083d370c3 100644
--- a/src/mtime_iso8601.c
+++ b/src/mtime_iso8601.c
@@ -737,9 +737,9 @@ get_date_time(const char* buffer, struct iso8601_datetime* datetimeObj, struct i
     else if((stat == DURATION_MATCH_STD || stat == DURATION_MATCH_LONG) && (RAISE_YEAR_OUT_OF_BOUND_EXCEPTION == false))
       {
        if (stat == DURATION_MATCH_STD)    /* STD: eg. P01Y05M */
-         durationObj->flag_std_form = true;
+         durationObj->flag_std_form = 1;
        else				  /*LONG: eg. P17M    */
-         durationObj->flag_std_form = false;
+         durationObj->flag_std_form = 0;
   
 	/* Set sign of duration. */
 	if (duObj.sign == '$')
diff --git a/src/mtime_iso8601.rl b/src/mtime_iso8601.rl
index c11be49d954d7ca1021cc3e477974f992df2a282..5aeb5320c311495bafd8e6e91ece17747b75fd9a 100644
--- a/src/mtime_iso8601.rl
+++ b/src/mtime_iso8601.rl
@@ -606,9 +606,9 @@ get_date_time(const char* buffer, struct iso8601_datetime* datetimeObj, struct i
     else if((stat == DURATION_MATCH_STD || stat == DURATION_MATCH_LONG) && (RAISE_YEAR_OUT_OF_BOUND_EXCEPTION == false))
       {
        if (stat == DURATION_MATCH_STD)    /* STD: eg. P01Y05M */
-         durationObj->flag_std_form = true;
+         durationObj->flag_std_form = 1;
        else				  /*LONG: eg. P17M    */
-         durationObj->flag_std_form = false;
+         durationObj->flag_std_form = 0;
   
 	/* Set sign of duration. */
 	if (duObj.sign == '$')
diff --git a/src/mtime_timedelta.c b/src/mtime_timedelta.c
index 5408fe3daea0f70027bbddbe271aa6bebd4aacf0..1ac1b07671de8b4caf35fdaefd7345ec55d50725 100644
--- a/src/mtime_timedelta.c
+++ b/src/mtime_timedelta.c
@@ -70,7 +70,7 @@ newTimeDelta(const char* tds)
           return NULL ;
         }
 
-      duration_type_flag == 2?(td->flag_std_form = true):(td->flag_std_form = false);
+      duration_type_flag == 2?(td->flag_std_form = 1):(td->flag_std_form = 0);
       /* IMPORTANT: Negative/Positive time delta is indicated using td->sign (-/+). year,month,day..etc are always positive integers or 0. */
       td->sign          = isoDuration->sign;
       td->year          = isoDuration->year;