double getValue( int tblPos, long[] timestamps )
	{
		long time = timestamps[tblPos];
		
		// Out of range
		if ( time > xVal2 || time < xVal1 )
			return Double.NaN;
		
		// Hrule
		if ( yVal1 == yVal2 )
			return yVal1;
		
		// Vrule
		if ( yVal1 == Double.MIN_VALUE && yVal2 == Double.MAX_VALUE )
			return Double.NaN;
		
		// No line, very rare, will usually be 'out of range' first
		if ( xVal1 == xVal2 )
			return Double.NaN;
				
		// Custom line
		return ( dc * ( time - xVal1 ) + yVal1 );
	}