Using Python as an option with the 'Calculate Field' tool to calculate geometry generates an incorrect field value of '-1' if values in the expression are integers.
Either cast as a float "float(!shape.area!), or use VB code like so:Dim pMxDoc As IMxDocumentDim pGeometry As IGeometryDim pMap As IMapDim pArea As IAreaDim dArea As DoubleDim dC As DoubleDim sOutMeasure As StringDim bSrefFromMap As Boolean'======================='Adjust the parameters below'bSrefFromMap = True ==> the area will be calculated in the projection of the Map'bSrefFromMap = False ==> the area will be calculated in the projection of the databSrefFromMap = False'unmark the desired output units'sOutMeasure = "Acres"'sOutMeasure = "Square Kilometers"sOutMeasure = "Square Meters"'sOutMeasure = "Square Miles"'=======================If (IsNull([Shape])) Then dArea = -1Else Set pGeometry = [Shape] If (pGeometry.IsEmpty) Then dArea = -1 Else If (bSrefFromMap) Then Set pMxDoc = ThisDocument Set pMap = pMxDoc.FocusMap pGeometry.Project pMap.SpatialReference Select Case pMap.MapUnits Case 3 'Feet Select Case sOutMeasure Case "Acres" dC = 0.00002295684 Case "Square Kilometers" dC = 0.0000000930787 Case "Square Meters" dC = 0.092903 Case "Square Miles" dC = 0.0000000359375 Case Else dC = 1 End Select Case 9 'Meters Select Case sOutMeasure Case "Acres" dC = 0.0002471 Case "Square Kilometers" dC = 0.000001 Case "Square Meters" dC = 1 Case "Square Miles" dC = 0.0000003861022 Case Else dC = 1 End Select Case Else dC = 1 End Select Else dC = 1 End If Set pArea = pGeometry dArea = pArea.Area * dC End IfEnd If