Agreed.

//gmtcalc $calc( 1547987696 + 86400*0)
//gmtcalc $calc( 1547987696 + 86400*181)

The first number displayed is calculating the gmt(N)'s time of day using % mod and // floor divide, and always shows 12:34:56, regardless of the time of year, and that's what $gmt(N) should do.

Instead, when the clock is set to January, $gmt(N) shows them as:

Sun Jan 20 12:34:56 2019
Sun Jul 20 13:34:56 2019

But using the same pair of $gmt(N)s during July shows the date strings as:

Sun Jan 20 11:34:56 2019
Sun Jul 20 12:34:56 2019

$gmt should not be leaping forward in the spring then falling back in the fall, and should always show the same time for the same N.

Code:
alias gmtcalc {
  var %gmt $$1
  var %day $calc(%gmt // 86400)
  var %tmp $calc(%gmt % 86400)
  var %hours $calc(%tmp // 3600)
  var %mins $calc((%tmp - (%hours * 3600)) // 60 )
  var %secs $calc(%tmp % 60)
  echo -a days %day $+(%hours,:,%mins,:,%secs) vs $gmt($1)
}