Firstly expressions columns store their values in the value like any other column and only evaluate in responce to certain events. So it is possible to look at a table an see data that doesn;t agree with the current value of the expression.
After much digging (Mostly by Jason) it turns out on add of a the row to the table and on EndEdit the row or of any dependent rows.