diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 31b42d4612f5f6ed388bf35147c105924ed84d23..288203389bb10a47acb86cf47d386514ec80168a 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -8,7 +8,7 @@
  *
  *
  * IDENTIFICATION
- *	  $Header: /cvsroot/pgsql/src/backend/utils/adt/datetime.c,v 1.105 2003/05/18 01:06:26 tgl Exp $
+ *	  $Header: /cvsroot/pgsql/src/backend/utils/adt/datetime.c,v 1.106 2003/06/25 21:14:14 tgl Exp $
  *
  *-------------------------------------------------------------------------
  */
@@ -3510,6 +3510,7 @@ EncodeInterval(struct tm * tm, fsec_t fsec, int style, char *str)
 				is_before = (tm->tm_mday < 0);
 				is_nonzero = TRUE;
 			}
+
 			if ((!is_nonzero) || (tm->tm_hour != 0) || (tm->tm_min != 0)
 				|| (tm->tm_sec != 0) || (fsec != 0))
 			{
@@ -3523,7 +3524,7 @@ EncodeInterval(struct tm * tm, fsec_t fsec, int style, char *str)
 				/* Mark as "non-zero" since the fields are now filled in */
 				is_nonzero = TRUE;
 
-				/* fractional seconds? */
+				/* need fractional seconds? */
 				if (fsec != 0)
 				{
 #ifdef HAVE_INT64_TIMESTAMP
@@ -3536,14 +3537,11 @@ EncodeInterval(struct tm * tm, fsec_t fsec, int style, char *str)
 #endif
 					TrimTrailingZeros(cp);
 					cp += strlen(cp);
-					is_nonzero = TRUE;
 				}
-				/* otherwise, integer seconds only? */
-				else if (tm->tm_sec != 0)
+				else
 				{
 					sprintf(cp, ":%02d", abs(tm->tm_sec));
 					cp += strlen(cp);
-					is_nonzero = TRUE;
 				}
 			}
 			break;
diff --git a/src/test/regress/expected/interval.out b/src/test/regress/expected/interval.out
index 32120be5412dfecd4a80272a7e2c3d885e7f57a9..da48abc2f59c3f42d597d6a3d5673b1b69fe66c9 100644
--- a/src/test/regress/expected/interval.out
+++ b/src/test/regress/expected/interval.out
@@ -6,43 +6,43 @@ SET DATESTYLE = 'ISO';
 SELECT INTERVAL '01:00' AS "One hour";
  One hour 
 ----------
- 01:00
+ 01:00:00
 (1 row)
 
 SELECT INTERVAL '+02:00' AS "Two hours";
  Two hours 
 -----------
- 02:00
+ 02:00:00
 (1 row)
 
 SELECT INTERVAL '-08:00' AS "Eight hours";
  Eight hours 
 -------------
- -08:00
+ -08:00:00
 (1 row)
 
 SELECT INTERVAL '-05' AS "Five hours";
  Five hours 
 ------------
- -05:00
+ -05:00:00
 (1 row)
 
 SELECT INTERVAL '-1 +02:03' AS "22 hours ago...";
  22 hours ago... 
 -----------------
- -21:57
+ -21:57:00
 (1 row)
 
 SELECT INTERVAL '-1 days +02:03' AS "22 hours ago...";
  22 hours ago... 
 -----------------
- -21:57
+ -21:57:00
 (1 row)
 
 SELECT INTERVAL '10 years -11 month -12 days +13:14' AS "9 years...";
-          9 years...           
--------------------------------
- 9 years 1 mon -11 days -10:46
+            9 years...            
+----------------------------------
+ 9 years 1 mon -11 days -10:46:00
 (1 row)
 
 CREATE TABLE INTERVAL_TBL (f1 interval);
@@ -63,10 +63,10 @@ INSERT INTO INTERVAL_TBL (f1) VALUES ('@ 30 eons ago');
 ERROR:  Bad interval external representation '@ 30 eons ago'
 -- test interval operators
 SELECT '' AS ten, INTERVAL_TBL.*;
- ten |       f1       
------+----------------
-     | 00:01
-     | 05:00
+ ten |       f1        
+-----+-----------------
+     | 00:01:00
+     | 05:00:00
      | 10 days
      | 34 years
      | 3 mons
@@ -74,30 +74,30 @@ SELECT '' AS ten, INTERVAL_TBL.*;
      | 1 day 02:03:04
      | 6 years
      | 5 mons
-     | 5 mons 12:00
+     | 5 mons 12:00:00
 (10 rows)
 
 SELECT '' AS nine, INTERVAL_TBL.*
    WHERE INTERVAL_TBL.f1 <> interval '@ 10 days';
- nine |       f1       
-------+----------------
-      | 00:01
-      | 05:00
+ nine |       f1        
+------+-----------------
+      | 00:01:00
+      | 05:00:00
       | 34 years
       | 3 mons
       | -00:00:14
       | 1 day 02:03:04
       | 6 years
       | 5 mons
-      | 5 mons 12:00
+      | 5 mons 12:00:00
 (9 rows)
 
 SELECT '' AS three, INTERVAL_TBL.*
    WHERE INTERVAL_TBL.f1 <= interval '@ 5 hours';
  three |    f1     
 -------+-----------
-       | 00:01
-       | 05:00
+       | 00:01:00
+       | 05:00:00
        | -00:00:14
 (3 rows)
 
@@ -105,8 +105,8 @@ SELECT '' AS three, INTERVAL_TBL.*
    WHERE INTERVAL_TBL.f1 < interval '@ 1 day';
  three |    f1     
 -------+-----------
-       | 00:01
-       | 05:00
+       | 00:01:00
+       | 05:00:00
        | -00:00:14
 (3 rows)
 
@@ -119,81 +119,81 @@ SELECT '' AS one, INTERVAL_TBL.*
 
 SELECT '' AS five, INTERVAL_TBL.* 
    WHERE INTERVAL_TBL.f1 >= interval '@ 1 month';
- five |      f1      
-------+--------------
+ five |       f1        
+------+-----------------
       | 34 years
       | 3 mons
       | 6 years
       | 5 mons
-      | 5 mons 12:00
+      | 5 mons 12:00:00
 (5 rows)
 
 SELECT '' AS nine, INTERVAL_TBL.*
    WHERE INTERVAL_TBL.f1 > interval '@ 3 seconds ago';
- nine |       f1       
-------+----------------
-      | 00:01
-      | 05:00
+ nine |       f1        
+------+-----------------
+      | 00:01:00
+      | 05:00:00
       | 10 days
       | 34 years
       | 3 mons
       | 1 day 02:03:04
       | 6 years
       | 5 mons
-      | 5 mons 12:00
+      | 5 mons 12:00:00
 (9 rows)
 
 SELECT '' AS fortyfive, r1.*, r2.*
    FROM INTERVAL_TBL r1, INTERVAL_TBL r2
    WHERE r1.f1 > r2.f1
    ORDER BY r1.f1, r2.f1;
- fortyfive |       f1       |       f1       
------------+----------------+----------------
-           | 00:01          | -00:00:14
-           | 05:00          | -00:00:14
-           | 05:00          | 00:01
-           | 1 day 02:03:04 | -00:00:14
-           | 1 day 02:03:04 | 00:01
-           | 1 day 02:03:04 | 05:00
-           | 10 days        | -00:00:14
-           | 10 days        | 00:01
-           | 10 days        | 05:00
-           | 10 days        | 1 day 02:03:04
-           | 3 mons         | -00:00:14
-           | 3 mons         | 00:01
-           | 3 mons         | 05:00
-           | 3 mons         | 1 day 02:03:04
-           | 3 mons         | 10 days
-           | 5 mons         | -00:00:14
-           | 5 mons         | 00:01
-           | 5 mons         | 05:00
-           | 5 mons         | 1 day 02:03:04
-           | 5 mons         | 10 days
-           | 5 mons         | 3 mons
-           | 5 mons 12:00   | -00:00:14
-           | 5 mons 12:00   | 00:01
-           | 5 mons 12:00   | 05:00
-           | 5 mons 12:00   | 1 day 02:03:04
-           | 5 mons 12:00   | 10 days
-           | 5 mons 12:00   | 3 mons
-           | 5 mons 12:00   | 5 mons
-           | 6 years        | -00:00:14
-           | 6 years        | 00:01
-           | 6 years        | 05:00
-           | 6 years        | 1 day 02:03:04
-           | 6 years        | 10 days
-           | 6 years        | 3 mons
-           | 6 years        | 5 mons
-           | 6 years        | 5 mons 12:00
-           | 34 years       | -00:00:14
-           | 34 years       | 00:01
-           | 34 years       | 05:00
-           | 34 years       | 1 day 02:03:04
-           | 34 years       | 10 days
-           | 34 years       | 3 mons
-           | 34 years       | 5 mons
-           | 34 years       | 5 mons 12:00
-           | 34 years       | 6 years
+ fortyfive |       f1        |       f1        
+-----------+-----------------+-----------------
+           | 00:01:00        | -00:00:14
+           | 05:00:00        | -00:00:14
+           | 05:00:00        | 00:01:00
+           | 1 day 02:03:04  | -00:00:14
+           | 1 day 02:03:04  | 00:01:00
+           | 1 day 02:03:04  | 05:00:00
+           | 10 days         | -00:00:14
+           | 10 days         | 00:01:00
+           | 10 days         | 05:00:00
+           | 10 days         | 1 day 02:03:04
+           | 3 mons          | -00:00:14
+           | 3 mons          | 00:01:00
+           | 3 mons          | 05:00:00
+           | 3 mons          | 1 day 02:03:04
+           | 3 mons          | 10 days
+           | 5 mons          | -00:00:14
+           | 5 mons          | 00:01:00
+           | 5 mons          | 05:00:00
+           | 5 mons          | 1 day 02:03:04
+           | 5 mons          | 10 days
+           | 5 mons          | 3 mons
+           | 5 mons 12:00:00 | -00:00:14
+           | 5 mons 12:00:00 | 00:01:00
+           | 5 mons 12:00:00 | 05:00:00
+           | 5 mons 12:00:00 | 1 day 02:03:04
+           | 5 mons 12:00:00 | 10 days
+           | 5 mons 12:00:00 | 3 mons
+           | 5 mons 12:00:00 | 5 mons
+           | 6 years         | -00:00:14
+           | 6 years         | 00:01:00
+           | 6 years         | 05:00:00
+           | 6 years         | 1 day 02:03:04
+           | 6 years         | 10 days
+           | 6 years         | 3 mons
+           | 6 years         | 5 mons
+           | 6 years         | 5 mons 12:00:00
+           | 34 years        | -00:00:14
+           | 34 years        | 00:01:00
+           | 34 years        | 05:00:00
+           | 34 years        | 1 day 02:03:04
+           | 34 years        | 10 days
+           | 34 years        | 3 mons
+           | 34 years        | 5 mons
+           | 34 years        | 5 mons 12:00:00
+           | 34 years        | 6 years
 (45 rows)
 
 SET DATESTYLE = 'postgres';