Bug in TTable.Cancel method ?

hi all,
i use four dBase tables : table1 (Master Table), table2, table3,table4
(table1 detailled tables)

here's a little code sample to show my problem :

function modified_ok : boolean;
Begin
     modified_ok:=(table1.modified) or (table2.modified) or
                  (table3.modified) or (table4.modified);
End;

procedure tmyform.button1click(Sender:TObject);
Begin
        {...stuff...}
        {at this point all my tables are in dsEdit State, and all the
         Modified properties of my tables are True}
        table1.cancel;
        table2.Cancel;
        table3.Cancel;
        table4.Cancel;
        if modified_ok then showmessage('modified still true');
        {*}
        {... stuff...}
End;

{*} My problem is here. All the tables go back to dsBrowse state, that works
fine.But  i've read on the on-line help that i a ttable.cancel method is
called, then the Modified propertie is set back to false. but in this sample
code, the message window appears. So, where's the problem because i do not
see ?

thanks in advance for any answer.

Guillaume