//-------------------------------------------------------------------------
	  /// <summary>
	  /// Test par rate for ISDA FRA Discounting method.
	  /// </summary>
	  public virtual void test_parRate_ISDA()
	  {
		ResolvedFra fraExp = RFRA;
		SimpleRatesProvider prov = createProvider(fraExp);

		DiscountingFraProductPricer test = DiscountingFraProductPricer.DEFAULT;
		double parRate = test.parRate(fraExp, prov);
		assertEquals(parRate, FORWARD_RATE);
		ResolvedFra fra = createNewFra(FRA, parRate);
		CurrencyAmount pv = test.presentValue(fra, prov);
		assertEquals(pv.Amount, 0.0, TOLERANCE);

		// test via FraTrade
		DiscountingFraTradePricer testTrade = new DiscountingFraTradePricer(test);
		assertEquals(testTrade.parRate(RFRA_TRADE, prov), test.parRate(RFRA, prov));
	  }
	  /// <summary>
	  /// Test par rate for AFMA FRA Discounting method.
	  /// </summary>
	  public virtual void test_parRate_AFMA()
	  {
		ResolvedFra fraExp = RFRA_AFMA;
		SimpleRatesProvider prov = createProvider(fraExp);

		DiscountingFraProductPricer test = DiscountingFraProductPricer.DEFAULT;
		double parRate = test.parRate(fraExp, prov);
		assertEquals(parRate, FORWARD_RATE);
		ResolvedFra fra = createNewFra(FRA_AFMA, parRate);
		CurrencyAmount pv = test.presentValue(fra, prov);
		assertEquals(pv.Amount, 0.0, TOLERANCE);
	  }
 //-------------------------------------------------------------------------
 /// <summary>
 /// Calculates the par rate of the FRA trade.
 /// <para>
 /// The par rate is the rate for which the FRA present value is 0.
 ///
 /// </para>
 /// </summary>
 /// <param name="trade">  the trade </param>
 /// <param name="provider">  the rates provider </param>
 /// <returns> the par rate </returns>
 public virtual double parRate(ResolvedFraTrade trade, RatesProvider provider)
 {
     return(productPricer.parRate(trade.Product, provider));
 }