Two reasons for this really. First, I promised I'd do something with formalizing the code originated by Tim when I originally posed the problem. Second, a reader has had some issues downloading the original zip file. Since we have the opportunity we'll...