         @_running = false
         @onArrive = eventField()
     run: ->
-        if @_running then return
+        if @_running then return @
         @_checker = =>
             nowTime = new Date()
             if (if @allowsEqual then nowTime >= @targetTime else nowTime > @targetTime)

    @_endOfTime: new Date("9999-12-30T00:00:00Z")
    @_precision: null
    @enable: (precision = 30) ->
        Date.Timer._precision = precision
        @_internalTimer = setInterval(=>
            Date.Timer._onCheck.fire()
        , precision)
        undefined
    @disable: ->
        clearInterval(@_internalTimer)
        Date.Timer._precision = null
        undefined

        @_running = true
        @
    stop: ->
        if not @_running then return @
        Date.Timer._onCheck.unbind(@_checker)
        @_running = false
        @
