Find all endo-functions $f$ on a commutative semigroup $(\mathbb{S},*)$ such that
$f(x*y) = f(f(x)*f(y))$.

Typical case of interest are $(\mathbb{N},+)$ or $(\mathbb{Z}/k\mathbb{Z},+)$ or $(\mathbb{Z}/k\mathbb{Z},.)$.

QUESTION : Has anyone seen this before? 

I like to call them *mo-morphisms* ( phonetically it repeats as in the right hand side of the equation).

The motivation comes from the function $f(n) = n \mod 10$ ( any base will do ) on $(\mathbb{N},+)$.
 Another example on $(\mathbb{N},.)$ is $f(n):= rad(n)$. The product of the primes dividing $n$ (each prime counted once). It is easy to see that $rad(x.y)=rad(rad(x).rad(y))$.