When calculating multiple regions within two surfaces I recommend you use the "Grid Volume" command to calculate volumes between two surfaces and limit it to a boundary. This creates a Grid Volume object that can then be labeled. You can copy the following text into a text object to get all of the volume type properties. You could also add other properties if desired. As this type of label is smart, if you revise either of the surfaces the grid volume object will automatically update and the text will then reflect the new properties automatically. It will also update if you change the boundary. If you want the values to be static, then enter the text rather than use smart text codes.
Note that cut/fill maps and surface volume grids have a property that allows you to turn off the automatic recalculation. If you are making changes to the surfaces consider turning this off until done and then back on when complete. That way you don't get an update with each change you make.

Area of cut = @<OD,O,ac>@
Area of fill = @<OD,O,af>@
Area of zero volume = @<OD,O,az>@
Depth to balance = @<OD,O,BD>@
Cut volume = @<OD,O,vc>@
Fill volume = @<OD,O,vf>@
Net volume = @<OD,O,vn>@
Initial surface = @<OD,O,nsi>@
Final surface = @<OD,O,nsf>@
tim