Each call to getValueAt must produce the value for the requested cell without relying on the result of any previous call to getValueAt, because you have no control over when and how often getValueAt will be called.
Recompute the correct total each time it is requested as in @trashgod's example.