anchor.diff:      assert(simulation != null);
       assert(!_ticker.isTicking);
       _simulation = simulation;
  -    _startTime = null;
       _value = simulation.x(0.0);
       return _ticker.start();
     }
  
positive.code:   /// Stop ticking the current simulation
    void stop() {
      _simulation = null;
      _startTime = null;
      _ticker.stop();
    }
  
    /// Whether this object is currently ticking a simulation
    bool get isAnimating => _ticker.isTicking;
  
    void _tick(Duration timeStamp) {
      if (_startTime == null)
        _startTime = timeStamp;
  
      double timeInMicroseconds = (timeStamp - _startTime).inMicroseconds.toDouble();
      double timeInSeconds =  timeInMicroseconds / Duration.MICROSECONDS_PER_SECOND;
      _value = _simulation.x(timeInSeconds);
      final bool isLastTick = _simulation.isDone(timeInSeconds);
  
      if (isLastTick)
        stop();
  
      _onTick(_value);
  
negative.code: import 'package:newton/newton.dart';
  import 'package:sky/src/animation/scheduler.dart';
  
  typedef _TickerCallback(Duration elapsed);
  
  /// Calls its callback once per animation frame
  class Ticker {
  