public static void updateReturn(MACrossPoint point, HistoryRecord crossRecord, MovingAverage ma1, MovingAverage ma2, BigDecimal target) {
		BigDecimal sign = BigDecimal.ONE;
		if( !point.crossUp )
			sign = sign.negate();
		if( point.maxReturnDateHistoryRecord == null 
			|| Utils.calcReturnPct(point.maxReturnDateHistoryRecord.getAdjClose(), point.crossDateHistoryRecord.getAdjClose()).multiply(sign).compareTo(target) <= 0 ) {
			point.maxReturnDateHistoryRecord = crossRecord;
			point.maxReturnDateMovingAverage1 = ma1;
			point.maxReturnDateMovingAverage2 = ma2;
		}
		point.returnPct = Utils.calcReturnPct(point.maxReturnDateHistoryRecord.getAdjClose(), point.crossDateHistoryRecord.getAdjClose()).multiply(sign);
		point.returnAmount = point.maxReturnDateHistoryRecord.getAdjClose().subtract(point.crossDateHistoryRecord.getAdjClose()).multiply(sign);
		point.meetReturnTarget = point.returnPct.compareTo(target) > 0;
		if( point.meetReturnTarget ) {
			point.returnPct = target;
		}
	}