Any other ideas or +1's for any of the existing ones?
+1, inverse good :)
In the attached patch I've renamed negative to inverse. I've also disabled the inverse functions when an expression in an aggregate contains a volatile function.
I've attached an updated patch in which I've done some more work to the documents and also added some more sanity checking around CREATE AGGREGATE. The previous patch allowed CREATE AGGREGATE to accept a transition function which was strict and an inverse transition function which was not, or vise versa.
I've also added a bunch of regression tests around create aggregate which were missing in the previous patch.