Actually your algorithm is correct - I didn't get that `l` is the start point and `t_start` is the length - but only if you change `t_start` to  `l` in this call