Date and PV calculations
dateMath() functions PV for exact date cash flows.
by taa1953
JavaScript
// ordinal values
window["PMT_METHOD"] = {
"ARREARS": 0,
"ADVANCE": 1
};
window["DEBT_TYPE"] = {
"LOAN": 0,
"LEASE": 1
};
// ordinal values
window["PMT_FREQUENCY"] = {
"DAILY": 1,
"WEEKLY": 2,
"BIWEEKLY": 3,
"TWICEMONTHLY": 4,
"EVERY4WKS": 5,
"MONTHLY": 6,
"BIMONTHLY": 7,
"QUARTERLY": 8,
"EVERY4MONTHS": 9,
"SEMIANNUALLY": 10,
"ANNUALLY": 11
};
// ordinal values
window["CMP_FREQUENCY"] = {
"CONTINUOUS": 0,
"DAILY": 1,
"WEEKLY": 2,
"BIWEEKLY": 3,
"TWICEMONTHLY": 4,
"EVERY4WKS": 5,
"MONTHLY": 6,
"BIMONTHLY": 7,
"QUARTERLY": 8,
"EVERY4MONTHS": 9,
"SEMIANNUALLY": 10,
"ANNUALLY": 11,
"EXACT": 12
};
// periods per year (constants)
// var PPY = [-1, 360, 52, 26, 24, 13, 12, 6, 4, 3, 2, 1, -1];
window["PPY"] = [-1, 360, 52, 26, 24, 13, 12, 6, 4, 3, 2, 1, -1];
// months per frequency
window["MPF"] = [-1, 0, 0, 0, 0, 0, 1, 2, 3, 4, 6, 12, -1];
// days per frequency, monthly periods do not have consistent number of days, thus error.
window["DPF"] = [-1, 1, 7, 14, -1, 28, -1, -1, -1, -1, -1, -1, -1];
window["ONE_DAY"] = 24 * 60 * 60 * 1000; // hours*minutes*seconds*milliseconds
window["DAYS_PER_WEEK"] = 7;
window["strFrequencies"] = ["Continuous", "Daily", "Weekly", "BiWeekly", "Twice Monthly", "Every 4 Weeks", "Monthly", "BiMonthly", "Quarterly", "Every 4 Months", "Semiannually", "Annually", "Exact/Simple"];
// ordinal
window["DAYS_IN_YEAR"] = {
"THREE_SIXTY": 0,
"THREE_SIXTY_FOUR": 1,
"THREE_SIXTY_FIVE": 2,
"THREE_SIXTY_SIXTY": 3
};
window["diy"] = DAYS_IN_YEAR["THREE_SIXTY"];
window["DAYS_PER_YEAR"] = [360, 364, 365, 366];
window["dpy"] = DAYS_PER_YEAR[diy];
//alert(dpy+"\n"+diy);
var calcRates = function() {
/*-This method returns the same value as calling Excel's
Nominal( Effect( Rate, CompoundingPeriodsPerYear ), PmtPeriodsPerYear )
-Returns an effective annual rate */
var effectiveRate_ = function(nominalRate, pmtFreq,...