'; makeQuestion("bxspFCAA007FUM","a7TypeSelector",questionHtml); fcFirm.a7Type = 2; // Reset A7 flag }; feeBlock("FCAA007FUM").deactivate = function () { this.active = false; removeQuestion("a7TypeSelector"); }; // Specific code to calculate A7 fee band based on quirks for FCA and MAS var a7Calculation = function(band) { var typesAndDiscounts = [0.5,0.85,1]; var discount = typesAndDiscounts[fcFirm.a7Type]; band = this.rates[band]; var units = this.rates[0]; var min = band[1] / units; var max = band[2] / units; var rate = band[3]; var data = this.getFtd()/units; var result; var workings = ""; if(data max) { result = ((Math.round((max - min) * rate * 100) / 100) * discount); workings = "(" + (roundDown((max - min),4)) + " x " + rate + ") x " + discount; } else { result = ((Math.round((data - min) * rate * 100) / 100) * discount); workings = "(" + (roundDown((data - min),4)) + " x " + rate + ") x " + discount; } return ([result,workings]); }; // Specific code to calculate A7 fee band based on quirks for PGS var a7Calculation_PGS = function(band) { var typesAndDiscounts = [0,1,1]; var discount = typesAndDiscounts[fcFirm.a7Type]; band = this.rates[band]; var units = this.rates[0]; var min = band[1] / units; var max = band[2] / units; var rate = band[3]; var data = this.getFtd()/units; var result; var workings = ""; if(data max) { result = ((Math.round((max - min) * rate * 100) / 100) * discount); workings = "(" + (roundDown((max - min),4)) + " x " + rate + ") x " + discount; } else { result = ((Math.round((data - min) * rate * 100) / 100) * discount); workings = "(" + (roundDown((data - min),4)) + " x " + rate + ") x " + discount; } return ([result,workings]); }; feeBlock("FCAA007FUM").calculateBandF = a7Calculation; feeBlock("MASA007FUM").calculateBandF = a7Calculation; feeBlock("PGSPG007FUM").calculateBandF = a7Calculation_PGS; feeBlock("FGLA007FUM").calculateBandF = a7Calculation; feeBlock("FGLPG007FUM").calculateBandF = a7Calculation_PGS; feeBlock("FCAA010NOT").activate = function () { this.active = true; var questionHtml = '
Is your firm regulated by the Prudential Regulation Authority (PRA)?
'; makeQuestion("bxspFCAA010NOT","praQuestion",questionHtml); if (fcFirm.isPraRegulated) { jQuery("#isPraRegTrue").prop("checked",true); } else { jQuery("#isPraRegFalse").prop("checked",true); } }; feeBlock("FCAA010NOT").deactivate = function () { this.active = false; removeQuestion("praQuestion"); }; feeBlock("FCAAP00REGCOND").getFtd = function() { // Adds up the total FCA fees charged to bands A2 - A22 var conductTotal = 0; for (var i = 0; i 1 && feeBlocks[i].active) { conductTotal = conductTotal + feeBlocks[i].calculateNodFee(); } } return conductTotal; }; feeBlock("FCAAP00REGCOND").calculateNjDiscountRate = function() {return 0}; // feeBlock("FCAAG02MEL").getFtd = InheritBlock.prototype.getFtd; feeBlock("PRAPA00MINFEE").getMels = function () { return (feeBlock("FCAA001MEL").ftd); }; feeBlock("PRAPA00MINFEE").getGpi = function () { return (feeBlock("FCAA003GPI").ftd); }; feeBlock("PRAPA00MINFEE").getGtl = function () { return (feeBlock("FCAA003GTL").ftd); }; feeBlock("PRAPA00MINFEE").getAgpi = function () { return (feeBlock("FCAA004AGPI").ftd); }; feeBlock("PRAPA00MINFEE").getMr = function () { return (feeBlock("FCAA004MR").ftd); }; feeBlock("PRAPA00MINFEE").getFtd = function(){ var ftd = 5; if (fcFirm.isPraRegulated) { ftd = 4; } if (fcFirm.isCreditUnion && this.getMels() 0) { return discount; } else { return 0; } }; var applyNdInsPA04Discount = function() { var discount = fcFirm.ndInsurerPA04Discount || 0; if (fcFirm.isNdInsurer && fcFirm.feeYear > 0) { return discount; } else { return 0; } }; feeBlock("PRAPA03GPI").getSpecialDiscount = applyNdInsPA03Discount; feeBlock("PRAPA03GTL").getSpecialDiscount = applyNdInsPA03Discount; feeBlock("PRAPA04AGPI").getSpecialDiscount = applyNdInsPA04Discount; feeBlock("PRAPA04MR").getSpecialDiscount = applyNdInsPA04Discount; /// END OF FEE BLOCKS --------------------------------------------------------- // Give each fee block a location for (var i = 0; i = 0) { var newNum = num + 0.00000001; // Needed to avoid floating point imprecision. Does actually add 0.0000001 // to numbers in some cases var pw = Math.pow(10,places); var res = Math.floor(newNum * pw); res = res / pw; return res; } else { return num; } } function roundDownPure(num, places) { if (Math.floor(num) === num) {return num;} if (places >= 0) { var pw = Math.pow(10,places); var res = Math.floor(num * pw); res = res / pw; return res; } else { return num; } } })();

Was this page helpful?

radios
First published: Last updated: 20/01/2021

Source URL: https://www.fca.org.uk/firms/calculate-your-annual-fee/fee-calculator

Links