It is not quite true that the rank is the number of non-zero eigenvalues. If the matrix is diagonalizable then the statement holds. In general, the multiplicity of zero as an eigenvalue will always be greater than or equal to the nullity of the matrix (as a consequence of algebraic multiplicity always being larger than geometric multiplicity).
As for when the matrix loses rank as you take powers of it, it is more informative to examine the Jordan blocks of the matrix. If your matrix has a Jordan block of size $k$ corresponding to zero, then it is easy to see that the matrix will lose a rank for each power up to the $k$th power. How many ranks it loses "per power" will be dependent on the number and the sizes of the null Jordan blocks. Notice also, that the example that wj32 gave is precisely a Jordan block of size $2$.