I think the simple rule should be thusly:

$gmt(0) == Thu Jan 01 00:00:00 1970
$gmt(3600) == Thu Jan 01 01:00:00 1970
$gmt(-3600) == Wed Dec 31 23:00:00 1969

Currently these values are incorrectly-offset by one hour if your local-time is in DST. $gmt() should be local-time-DST agnostic.

GMT does not observe DST, same as UTC. For all intents and purposes, mIRC should treat GMT and UTC as the same thing, even though UTC has some silly leap-second rule differences.

Well. At least I won lunch.
Good philosophy, see good in bad, I like!