1. A block switch controller for a linear motor, the linear motor comprising a plurality of motor blocks, a shuttle which is propelled by the magnetic forces generated by a motor current passing through the motor blocks, a plurality of motor block switches selectively passing the motor current through the motor blocks, and a plurality of position sensors determining the position of the shuttle relative to the motor blocks, the controller comprising: a. a memory storing a motor current threshold profile, the motor current threshold profile providing for variable current detection thresholds; b. a communications interface that enables external communication; c. a processing core controlling the plurality of motor block switches, the processing core comparing a measurement of the motor current against the motor current threshold profile stored in memory to determine an effective zero crossing point of the motor current, and the processing core controlling the plurality of motor block switches based on the determined effective zero crossing point of the motor current and shuttle position information obtained from the position sensors.