Yeah, I wouldn't mess too much with the transactions... Thanks for the advice. I left this for a few hours then went back and revisited it, and I think I now have what I wanted working with the TM mixin class. I may check out __bobo_before__ and __bobo_after__ as well though for comparison.
Basically the answer I came up with to my own question is as follows: Shared.DC.ZRDB.TM is basically incompatible with the persistence mechanism, however if you have a non-persistent class it does what I expected. My code was already split between a front-end and a back-end class where the front-end class is persistent, and the back- end class handles the actual work. The back-end class can safely mixin both TM, and Sync.Synchronized (which is also incompatible with persistence) and everything works as I expected. -- Duncan Booth duncan@dales.rmplc.co.uk int month(char *p){return(124864/((p[0]+p[1]-p[2]&0x1f)+1)%12)["\5\x8\3" "\6\7\xb\1\x9\xa\2\0\4"];} // Who said my code was obscure? http://dales.rmplc.co.uk/Duncan