You shouldn't need to test multiple first.var's, as they refer to a hierarchy setup using the BY statement, e.g.:
by State City ZipCode;
Where all the same State values are grouped together, with all the State-City combinations grouped together, and all the State-City-ZipCode combinations group together.
Therefore first.State is also first.City and first.ZipCode, as it is the first record for a new value of State. In a similar way first.City is also first.ZipCode, but first.ZipCode may not be first.City or first.State.
To answer your question, in this case you only need to test first.State.