diff --git a/src/backend/utils/adt/dt.c b/src/backend/utils/adt/dt.c
index bab4873fc1fef929817e46438381fc06a9a8c4de..a9ae4eebe379bd784298886e27f22b1f9c2344e0 100644
--- a/src/backend/utils/adt/dt.c
+++ b/src/backend/utils/adt/dt.c
@@ -7,7 +7,7 @@
  *
  *
  * IDENTIFICATION
- *	  $Header: /cvsroot/pgsql/src/backend/utils/adt/Attic/dt.c,v 1.79 2000/01/02 02:32:37 momjian Exp $
+ *	  $Header: /cvsroot/pgsql/src/backend/utils/adt/Attic/dt.c,v 1.80 2000/01/04 07:53:27 thomas Exp $
  *
  *-------------------------------------------------------------------------
  */
@@ -787,6 +787,7 @@ datetime_mi(DateTime *datetime1, DateTime *datetime2)
  * To add a month, increment the month, and use the same day of month.
  * Then, if the next month has fewer days, set the day of month
  *	to the last day of month.
+ * Lastly, add in the "quantitative time".
  */
 DateTime   *
 datetime_pl_span(DateTime *datetime, TimeSpan *span)
@@ -815,12 +816,6 @@ datetime_pl_span(DateTime *datetime, TimeSpan *span)
 	{
 		dt = (DATETIME_IS_RELATIVE(*datetime) ? SetDateTime(*datetime) : *datetime);
 
-#ifdef ROUND_ALL
-		dt = JROUND(dt + span->time);
-#else
-		dt += span->time;
-#endif
-
 		if (span->month != 0)
 		{
 			struct tm	tt,
@@ -853,6 +848,12 @@ datetime_pl_span(DateTime *datetime, TimeSpan *span)
 				DATETIME_INVALID(dt);
 		}
 
+#ifdef ROUND_ALL
+		dt = JROUND(dt + span->time);
+#else
+		dt += span->time;
+#endif
+
 		*result = dt;
 	}
 
@@ -2441,7 +2442,10 @@ static int
 tm2timespan(struct tm * tm, double fsec, TimeSpan *span)
 {
 	span->month = ((tm->tm_year * 12) + tm->tm_mon);
-	span->time = ((((((tm->tm_mday * 24) + tm->tm_hour) * 60) + tm->tm_min) * 60) + tm->tm_sec);
+	span->time = ((((((tm->tm_mday * 24.0)
+					 + tm->tm_hour) * 60.0)
+					 + tm->tm_min) * 60.0)
+					 + tm->tm_sec);
 	span->time = JROUND(span->time + fsec);
 
 	return 0;