diff --git a/doc/src/sgml/config.sgml b/doc/src/sgml/config.sgml
index f23e5dc..401be8a 100644
--- a/doc/src/sgml/config.sgml
+++ b/doc/src/sgml/config.sgml
@@ -43,7 +43,9 @@
      are <literal>ms</literal> (milliseconds), <literal>s</literal>
      (seconds), <literal>min</literal> (minutes), <literal>h</literal>
      (hours), and <literal>d</literal> (days).  Note that the multiplier
-     for memory units is 1024, not 1000.
+     for memory units is 1024, not 1000. And also note that if you set
+     less value than which is expected for the time setting, the value
+     would be rounded up.
     </para>
 
     <para>
diff --git a/src/backend/utils/misc/guc.c b/src/backend/utils/misc/guc.c
index a8a17c2..876d6e1 100644
--- a/src/backend/utils/misc/guc.c
+++ b/src/backend/utils/misc/guc.c
@@ -5126,9 +5126,11 @@ parse_int(const char *value, int *result, int flags, const char **hintmsg)
 				switch (flags & GUC_UNIT_TIME)
 				{
 					case GUC_UNIT_S:
+						val += (0 < val && val < MS_PER_S) ? MS_PER_S : 0;
 						val /= MS_PER_S;
 						break;
 					case GUC_UNIT_MIN:
+						val += (0 < val && val < MS_PER_MIN) ? MS_PER_MIN : 0;
 						val /= MS_PER_MIN;
 						break;
 				}
@@ -5142,6 +5144,7 @@ parse_int(const char *value, int *result, int flags, const char **hintmsg)
 						val *= MS_PER_S;
 						break;
 					case GUC_UNIT_MIN:
+						val += (0 < val && val < S_PER_MIN) ? S_PER_MIN : 0;
 						val /= S_PER_MIN;
 						break;
 				}
