anchor.diff:      openFuture
         .then((RandomAccessFile opened) {
           _openedFile = opened;
  -        if (_position == null) {
  -          _position = 0;
  -        }
           if (_position > 0) {
             return opened.setPosition(_position);
  -        } else if (_position < 0) {
  -          throw new RangeError("Bad start position: $_position");
           }
         })
         .then((_) => _readBlock())
  
positive.code:     if (_end != null) {
        readBytes = min(readBytes, _end - _position);
        if (readBytes < 0) {
          throw new RangeError("Bad end position: $_end");
        }
      }
      _openedFile.read(readBytes)
  
negative.code:   }
  
    void _start() {
      if (_position == null) {
        _position = 0;
      } else if (_position < 0) {
        _controller.addError(new RangeError("Bad start position: $_position"));
        _controller.close();
        return;
      }
      Future<RandomAccessFile> openFuture;
      if (_path != null) {
        openFuture = new File(_path).open(mode: FileMode.READ);
  