Seems you're experiencing the same surprise as I did a few weeks ago. I had always learned at school 'autocorrelation function can be computed efficiently via the power spectrum', so I never had doubts about it, but when I finally wanted to use it: garbage.
The trick is, you have to zero-pad the input signal, just like with convolution. If you normalise with factor 1./sqrt(fftsize) before [rfft~] and use [sig~ 1] as the input, you'll see a triangle wave, a v-shape, as the autocorrelation result. This is called 'biased autocorrelation'. All other input types also show that contour in the output. To undo the triangle effect, just divide by the triangle (called 'unbiasing'). But this unbiased autocorrelation is still not very beautiful.
By far the best method I've seen is Philip McLeod's Specially Normalized Autocorrelation (SNAC). Read about it in his thesis:
http://miracle.otago.ac.nz/tartini/papers/Philip_McLeod_PhD.pdf
This however can't be applied at signal rate with regular Pd objects, so if you need it at signal rate it must be written in C. I've done a non-signal rate SNAC model (see attached patch), and used SNAC in pitch tracker [helmholtz~], for which you can find the C code:
http://www.katjaas.nl/helmholtz/helmholtz.html
Katja
http://www.pdpatchrepo.info/hurleur/SNAC03.pd