Coding is a funny thing. Been doing it for 20+ years and I've never been able to consistently state when I would have something done because, as Cliff said, when you make changes/improvements they can lead to other changes and improvements. Sometimes things just spiral outward, others it's quick and easy. When it spirals sometimes you can say, "okay, I can stop here and cut a release, then do this other stuff I was chasing and cut another release". It all just depends. When project managers and requirement folks ask me when something will be done, I tell them I'll let you know once it's done