When simulating the evolution of a system over time, the function that processes a time step should produce as output the same kind of thing that it receives as input.
If your initial conditions can be described one way, it should be possible to describe later conditions in the same way. It is useful to consider the conditions as positions in a parameter space.
Related: iterated functions