fix: ensure end index is never < 0
REF: rename method first->start
where possible, obtain iterators more efficiently