I'm pretty sure that advanced start filters out all buildings with -1 iCost before applying the iAdvancedStartCost percent modifier to the value of iCost.
And if buildings are to only be free in advanced start, not on regular starts then those buildings should be awarded automatically for free to all cities when the player exits the advanced start game mode. It shouldn't be something the player can choose not to get or forget to get before exiting advanced start game mode.
But yeah, if we want that then iAdvancedStartCost = 0 would be a good way for that automated free building on advanced start to be recognized in code, and we would need to do something else for selling buildings with no cost.
iCost = -2 may be the best way then.