もしかしてGMT の + と - が間違っている?
$ grep GMT+9 xs_time.h
{ "GMT+9", -9 },
$ grep UTC+9 xs_time.h
{ "UTC+9", 9 },
$ grep GMT xs_time.h
{ "GMT", 0 },
{ "GMT+1", -1 },
{ "GMT+2", -2 },
{ "GMT+3", -3 },
{ "GMT+4", -4 },
{ "GMT+5", -5 },
{ "GMT+6", -6 },
{ "GMT+7", -7 },
{ "GMT+8", -8 },
{ "GMT+9", -9 },
{ "GMT+10", -10 },
{ "GMT+11", -11 },
{ "GMT+12", -12 },
{ "GMT-1", 1 },
{ "GMT-2", 2 },
{ "GMT-3", 3 },
{ "GMT-4", 4 },
{ "GMT-5", 5 },
{ "GMT-6", 6 },
{ "GMT-7", 7 },
{ "GMT-8", 8 },
{ "GMT-9", 9 },
{ "GMT-10", 10 },
{ "GMT-11", 11 },
{ "GMT-12", 12 },
{ "GMT-13", 13 },
{ "GMT-14", 14 },