diff --git a/src/backend/utils/adt/timestamp.c b/src/backend/utils/adt/timestamp.c
index 1525d2a..7bfb867 100644
--- a/src/backend/utils/adt/timestamp.c
+++ b/src/backend/utils/adt/timestamp.c
@@ -4576,7 +4576,7 @@ timestamp_part(PG_FUNCTION_ARGS)
 		{
 			case DTK_EPOCH:
 #ifdef HAVE_INT64_TIMESTAMP
-				result = (timestamp - SetEpochTimestamp()) / 1000000.0;
+				result = ((float8)timestamp - SetEpochTimestamp()) / 1000000.0;
 #else
 				result = timestamp - SetEpochTimestamp();
 #endif
@@ -4793,7 +4793,7 @@ timestamptz_part(PG_FUNCTION_ARGS)
 		{
 			case DTK_EPOCH:
 #ifdef HAVE_INT64_TIMESTAMP
-				result = (timestamp - SetEpochTimestamp()) / 1000000.0;
+				result = ((float8)timestamp - SetEpochTimestamp()) / 1000000.0;
 #else
 				result = timestamp - SetEpochTimestamp();
 #endif
diff --git a/src/test/regress/expected/date.out b/src/test/regress/expected/date.out
index 56c5520..4306a5c 100644
--- a/src/test/regress/expected/date.out
+++ b/src/test/regress/expected/date.out
@@ -920,6 +920,18 @@ SELECT EXTRACT(EPOCH FROM TIMESTAMPTZ '1970-01-01+00');  --  0
          0
 (1 row)
 
+SELECT EXTRACT(EPOCH FROM TIMESTAMP   '294277-01-09 04:00:54.775806');     -- 9224318721654.78
+    date_part     
+------------------
+ 9224318721654.78
+(1 row)
+
+SELECT EXTRACT(EPOCH FROM TIMESTAMPTZ '294277-01-09 04:00:54.775806+00');  -- 9224318721654.78
+    date_part     
+------------------
+ 9224318721654.78
+(1 row)
+
 --
 -- century
 --
diff --git a/src/test/regress/sql/date.sql b/src/test/regress/sql/date.sql
index e40b4c4..21d9997 100644
--- a/src/test/regress/sql/date.sql
+++ b/src/test/regress/sql/date.sql
@@ -217,6 +217,8 @@ SELECT date 'tomorrow' - date 'yesterday' AS "Two days";
 SELECT EXTRACT(EPOCH FROM DATE        '1970-01-01');     --  0
 SELECT EXTRACT(EPOCH FROM TIMESTAMP   '1970-01-01');     --  0
 SELECT EXTRACT(EPOCH FROM TIMESTAMPTZ '1970-01-01+00');  --  0
+SELECT EXTRACT(EPOCH FROM TIMESTAMP   '294277-01-09 04:00:54.775806');     -- 9224318721654.78
+SELECT EXTRACT(EPOCH FROM TIMESTAMPTZ '294277-01-09 04:00:54.775806+00');  -- 9224318721654.78
 --
 -- century
 --
