The South Fork, approximately 20 miles long, rises in several streams in the mountains on the border of Floyd, Roanoke, and Montgomery counties and flows generally north, joining the North Fork from the south.