docs: function incrdatespace( start, stop, increment, options ) {
  	var nArgs = arguments.length,
  		opts = {
  			'round': 'floor'
  		},
  		incr = convert[ 'd' ],
  		flg = true,
  		round,
  		len,
  		i,
  		tmp,
  		arr;
  
  	start = validDate( start, 'Start' );
  	stop = validDate( stop, 'Stop' );
  
  	if ( nArgs > 2 ) {
  		if ( nArgs === 3 ) {
  			if ( isObject( increment ) ) {
  				opts = increment;
  			} else {
  				incr = increment;
  
  				// Turn off checking the options object...
  				flg = false;
  			}
  		} else {
  			opts = options;
  			incr = increment;
  		}
  		incr = validIncrement( incr );
  		if ( flg ) {
  			if ( !isObject( opts ) ) {
  				throw new TypeError( 'incrdatespace()::invalid input argument. Options must be an object.' );
  			}
  			if ( opts.hasOwnProperty( 'round' ) ) {
  				if ( typeof opts.round !== 'string' ) {
  					throw new TypeError( 'incrdatespace()::invalid input argument. Round option must be a string.' );
  				}
  				if ( rounders.indexOf( opts.round ) === -1 ) {
  					throw new Error( 'incrdatespace()::invalid input argument. Unrecognized round option. Must be one of [' + rounders.join( ',' ) + '].' );
  				}
  			} else {
  				opts.round = 'floor';
  			}
  		}
  	}
  	round = Math[ opts.round ];
  
  	// Calculate the array length:
  	len = Math.ceil( ( stop-start ) / incr );
  	if ( len < 0 ) {
  		return [ start ];
  	}
  
  	// Build the output array...
  	if ( len > 64000 ) {
  		// Ensure fast elements...
  		arr = [];
  		arr.push( start );
  		tmp = start.getTime();
  		for ( i = 1; i < len; i++ ) {
  			tmp += incr;
  			arr.push( new Date( round( tmp ) ) );
  		}
  		return arr;
  	}
  	arr = new Array( len );
  	arr[ 0 ] = start;
  	tmp = start.getTime();
  	for ( i = 1; i < len; i++ ) {
  		tmp += incr;
  		arr[ i ] = new Date( round( tmp ) );
  	}
  	return arr;
  }