I see you are using F# but you are looping and that kind of flies in the face of a functional language.

From what I understand some kind of recursion should take the place of that with the function returning the next spot until some end case is met.

I'm no expert in this - just my two cents!