PathDependentAsian::PathDependentAsian(const MJArray& LookAtTimes_,
                                       double DeliveryTime_,
                                       const PayOffBridge& ThePayOff_)
    : PathDependent(LookAtTimes_), DeliveryTime(DeliveryTime_),
      ThePayOff(ThePayOff_), NumberOfTimes(LookAtTimes_.size())
{
}
PathDependentDiscrete::PathDependentDiscrete(const MJArray& LookAtTimes_,
												double DeliveryTime_,
												double Barrier_,
												double Rebate_)
	: PathDependent(LookAtTimes_), DeliveryTime(DeliveryTime_), Barrier(Barrier_), Rebate(Rebate_),
		NumberOfTimes(LookAtTimes_.size()) 
{}
unsigned long PathDependentAsian::CashFlows(const MJArray& SpotValues,
        std::vector<CashFlow>& GeneratedFlows) const
{
    double sum = SpotValues.sum();
    double mean = sum/NumberOfTimes;
    GeneratedFlows[0].TimeIndex = 0UL;
    GeneraedFLows[0].Amount = ThePayOff(mean);
    return 1UL;
}