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

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

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

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