After all that about numbering centuries and millenia correctly,
why does CVS tip still give me
regression=# select extract(century from now());
date_part
-----------
20
(1 row)
[ ... looks in code ... ]
Apparently it's because you fixed only timestamp_part, and not
timestamptz_part. I'm not too sure about what timestamp_trunc or
timestamptz_trunc should do, but they may be wrong as well.
Could we have a more complete patch?
regards, tom lane