private DateTime[] _Reschedule_AdjustDates(ReschedulingOptions ro) { DateTime[] retval = new DateTime[2]; DateTime oldDate = DateTime.MinValue; DateTime newDate = DateTime.MinValue; bool first = false; int number = 0; for (int i = 0; i < _contract.InstallmentList.Count; i++) { Installment installment = _contract.GetInstallment(i); if (installment.IsRepaid) { continue; } if (!first) { first = true; oldDate = installment.ExpectedDate; newDate = installment.ExpectedDate; if (0 == ro.RepaymentDateOffset) { break; } newDate = newDate.AddDays(ro.RepaymentDateOffset); DateTime actualNewDate = _nwdS.GetTheNearestValidDate(newDate, _generalSettings.IsIncrementalDuringDayOff, _generalSettings.DoNotSkipNonWorkingDays, true); installment.ExpectedDate = actualNewDate; } installment.ExpectedDate = _contract.CalculateInstallmentDate(newDate, number); number++; } retval[0] = oldDate; retval[1] = newDate; return(retval); }