If a n-bit bijective function F is used in an encryption algorithm to transform a value x to y, i.e. y = F(x), it is commonly desirable that its avalanche property be superior. That is, changing one single bit of x will produce lots of changes of bits of y. In case however the given F doesn't have very nice avalanche property, the question of potential improvements naturally arises.
I found that post-processing y, the output of F, with a bit rotation of an amount that is variable and dependent on y can very effectively help, which in retrospect is easily understandable. Note that a rotation by a amount that is pseudo-random but independent of the value of y would not contribute to the avalanche of the function, though it can add some security to the function as it commonly does. (One can certainly also use a combination of both kinds of rotations, if considered desirable.) In an experiment F was chosen to be a 2nd degree permutation polynomial mod 2**n (its software implementation can be found in e.g. my Python code JADE-S, available in http://s13.zetaboards.com/Crypto/topic/7072208/1/). The amount of rotation of bits was chosen to be the number of 1-bits in the n bits of y. (Note that this rotation is reversible.) The following is the statistical evaluation with 1000 pseudo-randomly generated F's: