I have a layer with multi-polygon feature classes for states and provinces. The shape area for some features classes is < 0 causing the label to be position in odd locations. It seems that the calculation is generally correct, and that if I could update all shape area in a single query I could fix this quickly. Currently I am querying to identify the negative area features classes, and editing a point, which resets the area and then it labels correctly. However it would be much quicker to be able to run a batch update on the value.
The only time I've seen negative values in the Shape_Area field is when a polygon's vertices are ordered incorrectly. Repair geometry fixes ring ordering, which fixes the problem with Shape_Area.
You can use Calculate Geometry on a field, and calculate the area.
If the data is stored in a geodatabase, this field is added and updated automatically.