code: function (coords) {
          var base = {
                  ref: this.ref,
                  length: this.length,
                  cycles: this.cycles
              },
              position,
              iteration;
  
          if (!_.isObject(coords)) {
              return _.assign(base, {eof: true, bof: true, empty: this.empty()});
          }
          if (!this.length) {
              return _.assign(base, {eof: true, bof: true, empty: true});
          }
  
          position = coords.position;
          iteration = coords.iteration;
  
          // increment position
          position += 1;
  
          // check if we need to increment cycle
          if (position >= this.length) {
              // set position to 0 and increment iteration
              position = 0;
              iteration += 1;
  
              if (iteration >= this.cycles) {
                  return _.assign(base, {
                      position: this.length - 1,
                      iteration: iteration - 1,
                      eof: true
                  });
              }
  
              return _.assign(base, {
                  position: position,
                  iteration: iteration,
                  cr: true
              });
          }
  
          return _.assign(base, {position: position, iteration: iteration});
      }
docs: Tentative Cursor status, if we do `.next()`
  
  @param {Object} coords
  
  @returns {Object}