Skip to content

Instantly share code, notes, and snippets.

@ghalimi
Created January 21, 2013 22:43
Show Gist options
  • Star 5 You must be signed in to star a gist
  • Fork 1 You must be signed in to fork a gist
  • Save ghalimi/4590219 to your computer and use it in GitHub Desktop.
Save ghalimi/4590219 to your computer and use it in GitHub Desktop.
FV Function
// Copyright (c) 2012 Sutoiku, Inc. (MIT License)
// Some algorithms have been ported from Apache OpenOffice:
/**************************************************************
*
* Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements. See the NOTICE file
* distributed with this work for additional information
* regarding copyright ownership. The ASF licenses this file
* to you under the Apache License, Version 2.0 (the
* "License"); you may not use this file except in compliance
* with the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing,
* software distributed under the License is distributed on an
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
* KIND, either express or implied. See the License for the
* specific language governing permissions and limitations
* under the License.
*
*************************************************************/
function FV(rate, periods, payment, value, type) {
// Credits: algorithm inspired by Apache OpenOffice
// Initialize type
var type = (typeof type === 'undefined') ? 0 : type;
// Evaluate rate (TODO: replace with secure expression evaluator)
rate = eval(rate);
// Return future value
var result;
if (rate === 0) {
result = value + payment * periods;
} else {
var term = Math.pow(1 + rate, periods);
if (type === 1) {
result = value * term + payment * (1 + rate) * (term - 1.0) / rate;
} else {
result = value * term + payment * (term - 1) / rate;
}
}
return -result;
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment