The error messages keep saying the issue is a mismatch with FlowVar[T]. In Chapter 6 of **Nim in Action** here is what it says they are.
`FlowVar[T] can be thought of as a container similar to the Future[T] type, which you used in chapter 3. At first, the container has nothing inside it. When the spawned procedure is executed in a separate thread, it returns a value sometime in the future. When that happens, the returned value is put into the FlowVar container.` Here is updated `segcount` proc segcount(row, Kn: int): uint = var cnt = 0'u for k in 0..<Kn: cnt += seg[row + k].uint result = cnt So `segcount` is returning a `uint` value. This works perfectly well as below with no type mismatch. var cnt = 0'u for i in 0..<rescnt: cnt += segcount(i*KB, Kn) primecnt += cnt But using `spawn` causes a type mismatch: `cnt += spawn segcount(i*KB, Kn)` No matter what kind of container for `cnt` you use a type mismatch error appears.