Haskell, 6680
I'm surprised that it isn't longer!
a%b|g$take ba%b|b<1=0-1|(\x->x==reverse a++dropx)$take(b+1b-1)a=b+1|1<2=a%a++b`drop`a=b|1<2=a%(b+1b-1) gf a=a==reversea=a%length a f=(%0) This will not terminate if the input can't be made into a palindrome, butCalled like this is okay, right?:
λ> f "racercar" 45