docs: function(generationOptions, dataRange) {
  				var ticks = [];
  				// To get a "nice" value for the tick spacing, we will use the appropriately named
  				// "nice number" algorithm. See http://stackoverflow.com/questions/8506881/nice-label-algorithm-for-charts-with-minimum-ticks
  				// for details.
  
  				var spacing;
  				if (generationOptions.stepSize && generationOptions.stepSize > 0) {
  					spacing = generationOptions.stepSize;
  				} else {
  					var niceRange = helpers.niceNum(dataRange.max - dataRange.min, false);
  					spacing = helpers.niceNum(niceRange / (generationOptions.maxTicks - 1), true);
  				}
  				var niceMin = Math.floor(dataRange.min / spacing) * spacing;
  				var niceMax = Math.ceil(dataRange.max / spacing) * spacing;
  
  				// If min, max and stepSize is set and they make an evenly spaced scale use it.
  				if (generationOptions.min && generationOptions.max && generationOptions.stepSize) {
  					var minMaxDeltaDivisibleByStepSize = ((generationOptions.max - generationOptions.min) % generationOptions.stepSize) === 0;
  					if (minMaxDeltaDivisibleByStepSize) {
  						niceMin = generationOptions.min;
  						niceMax = generationOptions.max;
  					}
  				}
  
  				var numSpaces = (niceMax - niceMin) / spacing;
  				// If very close to our rounded value, use it.
  				if (helpers.almostEquals(numSpaces, Math.round(numSpaces), spacing / 1000)) {
  					numSpaces = Math.round(numSpaces);
  				} else {
  					numSpaces = Math.ceil(numSpaces);
  				}
  
  				// Put the values into the ticks array
  				ticks.push(generationOptions.min !== undefined ? generationOptions.min : niceMin);
  				for (var j = 1; j < numSpaces; ++j) {
  					ticks.push(niceMin + (j * spacing));
  				}
  				ticks.push(generationOptions.max !== undefined ? generationOptions.max : niceMax);
  
  				return ticks;
  			}