     @repeat = @repeatCount = 0
     @reverse = false
     @autoreverse = false
-    @direction = true
+    @direction = @startDirection = true
 
     # control
     @inPorts.start.on 'data', () =>

    @lastTime = @currentTime()
    @elapsedTime = 0
    @repeat = @repeatCount
    @running = true
    return unless @outPorts.started.isAttached()
    @outPorts.started.send(true)

    @inPorts.autoreverse.on 'data', (value) =>
      @autoreverse = value
    @inPorts.reverse.on 'data', (value) =>
      @startDirection = !value
      @direction = @startDirection unless @autoreverse

    # tick
    @inPorts.tick.on 'data', () =>
