Closing the iteration, on time, is one of key success for software project plan. Assume we have X features planned for iteration Y. At the end of iteration X, the project manager/team leader and process engineer [and customer in some cases] are supposed to review the iteration. Usually they evaluate the features and mark them as finished or not. If some of the features are still under development, never, ever extend the iteration duration. Drop the remaining features and close the iteration.
Instead of extending the duration, close it, and do the following things:
- Investigate why the features are not finished
- Work on improving the time estimate
- Monitor the time estimation in different iteration
- Most of the time, it's not developers' fault if they have not finished on time, it's because of bad estimation
It happens a lot the estimates at the begriming of the iterations are wrong. The key point at the end of iteration is dropping the remaining features and closing the iteration on time instead of extending the time of iteration.