This line is still racy, you either need to lock before modifying r.lats or you shoudn't incrementally update -- which is one of the reasons why I collected the results on a channel instead of slice. Less mutexes more performant code, otherwise locking would be the blocking case here.