diff --git a/src/backend/utils/adt/formatting.c b/src/backend/utils/adt/formatting.c
new file mode 100644
index 40a353f..576db95
*** a/src/backend/utils/adt/formatting.c
--- b/src/backend/utils/adt/formatting.c
*************** DCH_to_char(FormatNode *node, bool is_in
*** 2507,2513 ****
  				s += strlen(s);
  				if (tm->tm_gmtoff % SECS_PER_HOUR != 0)
  				{
! 					sprintf(s, ":%02ld", (tm->tm_gmtoff % SECS_PER_HOUR) / SECS_PER_MINUTE);
  					s += strlen(s);
  				}
  				break;
--- 2507,2513 ----
  				s += strlen(s);
  				if (tm->tm_gmtoff % SECS_PER_HOUR != 0)
  				{
! 					sprintf(s, ":%02ld", abs(tm->tm_gmtoff % SECS_PER_HOUR) / SECS_PER_MINUTE);
  					s += strlen(s);
  				}
  				break;
