I can't mind-read the intention of the change, but the effect is to do unsigned div/mod instead of signed. This allows the time value to be treated as an unsigned 32-bit number, so we should be looking at a 2106 problem not a 2038 problem.
Unfortunately while gmtime() is right, asctime() is getting its centuries in a twist: term% date 4070930400 Thu Jan 1 06:00:00 GMT 2099 term% date 4102466400 Fri Jan 1 06:00:00 GMT 2000