GISJOIN field for Tracts - understanding extra 0s

Having GISJOIN fields in both the shapefiles and tables from NHGIS is so helpful for joining and using this data in GIS! I’ve wondered for a while though why the tract IDs are padded with extra 0s - e.g., the first tract in a 2010 tracts table is in Alabama’s Autaga County, state 01, county 001, and tract 020100. Throw on a G at the start, and I would expect this to concatenate into G01001020100, for G+11 digits. But you have 2 extra zeros in there - one after the state (or before the county), and another after the county (or before the tract ID), netting G0100010020100, which is G+13 digits. What’s the reasoning behind this?


We pad the state and county codes to accommodate historical states/territories and counties that no longer exist. For example, we have historical data for Minnesota Territory, and we assigned it a code of ‘275’. We added the ‘5’ to the current day Minnesota FIPS code (‘27’), so that Minnesota Territory sorts alphabetically with the state of Minnesota.

We use that same extra digit for counties that used to exist but no longer do so.