private static TermCurve ConvertTermCurve(TermCurve termCurve, DateTime baseDate, int centralBankDateRuleMonths, IDayCounter dayCounter)
        {
            var interpolationMethod = new InterpolationMethod
            {
                Value = "PiecewiseConstantRateInterpolation"
            };

            termCurve.interpolationMethod = interpolationMethod;
            var lastDate = (DateTime)termCurve.point[termCurve.point.Length - 1].term.Items[0];

            return(InterpolateGapStepTermPoints(termCurve, CentralBanksHelper.GetCentralBankDays(baseDate, _centralBank, centralBankDateRuleMonths, lastDate), baseDate, dayCounter));//Add the extra points..
        }
        //TODO add EOM, EOQ and EOY perturbation: this transfers the step to the specific day.
        //Also needs to add EOM swaps to the asset config file.

        /// <summary>
        /// The main ctor.
        /// </summary>
        /// <param name="termCurve"></param>
        /// <param name="baseDate"></param>
        /// <param name="centralBankDateRuleMonths"></param>
        /// <param name="centralBank"></param>
        /// <param name="dayCounter"></param>
        public GapStepInterpolator(TermCurve termCurve, DateTime baseDate, int centralBankDateRuleMonths,
                                   CentralBanks centralBank, IDayCounter dayCounter)
            : base(ConvertTermCurve(termCurve, baseDate, centralBankDateRuleMonths, dayCounter), baseDate, dayCounter)
        {
            CentralBankDateRuleMonths = centralBankDateRuleMonths;
            _centralBank = centralBank;//var names = Enum.GetNames(typeof(AssetFactory.Types));
            //TODO remove this once working.
            var lastDate = (DateTime)termCurve.point[termCurve.point.Length - 1].term.Items[0];

            CentralBankDays = CentralBanksHelper.GetCentralBankDays(baseDate, centralBank, centralBankDateRuleMonths, lastDate);
            TermCurve       = InterpolateGapStepTermPoints(termCurve, CentralBankDays, baseDate, dayCounter);
        }