I assume the middle table of the 3 you posted is pc_race_table and the last is race_table.
If that is the case, then your nanny() code is checking for the alignment attributes in race_table, but you have put them in pc_race_table.
Try changing the nanny() code to use pc_race_table() instead - eg
if ((race == 0)
|| (!race_table[race].pc_race)
|| (IS_GOOD(ch) && !pc_race_table[race].good)
|| (IS_NEUTRAL(ch) && !pc_race_table[race].neutral)
|| (IS_EVIL(ch) && !pc_race_table[race].evil))
|