Fix places where 0.0 was used as a timeout in BeginStep
At one point, before timeout was implemented anywhere, 0.0 was thought to be a good choice to mean no timeout, or blocking. Turns out 0.0 more naturally means "poll and return immediately if no data". So, a negative timeout means "blocking". By convention we're using -1.0, but anything negative would work.