// Composition - forward part in non-cutoff period; past/valuation date case dealt with in previous methods
 internal double compositionFactorNonCutoff()
 {
     if (!nextFixing.isAfter(lastFixingNonCutoff))
     {
         OvernightIndexObservation obs = computation.observeOn(nextFixing);
         LocalDate startDate           = obs.EffectiveDate;
         LocalDate endDate             = computation.calculateMaturityFromFixing(lastFixingNonCutoff);
         double    accrualFactor       = dayCount.yearFraction(startDate, endDate);
         double    rate = rates.periodRate(obs, endDate);
         return(1.0d + accrualFactor * rate);
     }
     return(1.0d);
 }
        // Compute the accrued interest on a given period by approximation
        private static double approximatedInterest(OvernightIndexObservation observation, LocalDate endDate, OvernightIndexRates rates)
        {
            DayCount dayCount = observation.Index.DayCount;
            double   remainingFixingAccrualFactor = dayCount.yearFraction(observation.EffectiveDate, endDate);
            double   forwardRate = rates.periodRate(observation, endDate);

            return(Math.Log(1.0 + forwardRate * remainingFixingAccrualFactor));
        }
        // Compute the accrued interest sensitivity on a given period by approximation
        private static PointSensitivityBuilder approximatedInterestSensitivity(OvernightIndexObservation observation, LocalDate endDate, OvernightIndexRates rates)
        {
            DayCount dayCount = observation.Index.DayCount;
            double   remainingFixingAccrualFactor = dayCount.yearFraction(observation.EffectiveDate, endDate);
            double   forwardRate = rates.periodRate(observation, endDate);
            PointSensitivityBuilder forwardRateSensitivity = rates.periodRatePointSensitivity(observation, endDate);
            double rateExp = 1.0 + forwardRate * remainingFixingAccrualFactor;

            forwardRateSensitivity = forwardRateSensitivity.multipliedBy(remainingFixingAccrualFactor / rateExp);
            return(forwardRateSensitivity);
        }