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

    @repeat = @repeatCount = 0
    @reverse = false
    @autoreverse = false
    @direction = true

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

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

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