Personal Finance for India Module 4 – The maths of money
Simple and compound interest, done right
Work out simple and compound interest for any compounding frequency, turn a quoted rate into an effective one and check a doubling time exactly.
What you will learn
- Compute simple and compound interest for any compounding frequency
- Convert a nominal rate to an effective annual rate
- Estimate a doubling time with the rule of 72 and check it exactly
- Explain why interest that is paid out grows like simple interest
Before you start
What you’ll learn · Before you start
What you will learn
- Compute simple and compound interest for any compounding frequency
- Convert a nominal rate to an effective annual rate
- Estimate a doubling time with the rule of 72 and check it exactly
- Explain why interest that is paid out grows like simple interest
Before you start
On this page
Two people each put ₹1,00,000 in a deposit at 7.5 % a year for 30 years. One leaves every year’s interest in the deposit and ends with ₹8,75,496; the other has the interest paid out and spends it, and ends with her ₹1,00,000 back and ₹2,25,000 received along the way, ₹3,25,000 in all.
The difference is compounding. This lesson works out simple and compound interest for any compounding frequency, turns a quoted rate into the rate a deposit really earns in a year, checks the rule of 72 against the doubling period India Post states for A Government of India savings certificate, bought at post offices and authorised banks, that pays back double the amount invested when it matures., and shows why interest taken out never compounds. It is education only: the rates are examples for the arithmetic, and no product is recommended.
Simple interest pays only on the money you put in
A deposit of ₹1,00,000 at 7.5 % a year pays 7.5 % of ₹1,00,000 at the end of every year, ₹7,500. With simple interest: Interest worked out on the principal alone, as principal × rate × time. Interest earned earlier earns nothing, so every year pays the same amount. that never changes: the interest is always worked out on the principal: The amount put into a deposit or borrowed in a loan, on which interest is worked out. In a deposit of ₹1,00,000 at 7.5 % a year, the principal is ₹1,00,000., the ₹1,00,000 put in, and never on interest already earned.
In words: interest equals the principal times the yearly rate times the number of years. For three years, ₹1,00,000 × 0.075 × 3 = ₹22,500. The time need not be whole years: 18 months is 1.5 years, so ₹40,000 at 6 % earns ₹40,000 × 0.06 × 1.5 = ₹3,600. Year by year the balance climbs by the same step:
| Year | Interest that year | Balance at the end of the year |
|---|---|---|
| 1 | ₹7,500 | ₹1,07,500 |
| 2 | ₹7,500 | ₹1,15,000 |
| 3 | ₹7,500 | ₹1,22,500 |
The steps are equal because nothing that was earned is put to work. That makes simple interest easy to check, and it is how interest behaves whenever it leaves the deposit, which the last section of this lesson returns to.
Simple Interest Calculator Enter a principal, a yearly rate and a time in years or months, and see the interest and the balance.Checkpoint
Check: Simple interest on the principal
Compound interest also pays interest on the interest
Now let the interest stay. With compound interest: Interest worked out on the whole balance, interest added earlier included, so each period pays more than the last while the money stays invested. each year’s interest is added to the balance, and the next year’s 7.5 % is worked out on that larger balance. Step through the first three years, simple on the left and compound on the right, and watch where the two columns part:
The drawing shows the whole scene; its 5 steps are listed below.
Every step as text
- The same deposit twice. Two deposits of ₹1,00,000 at 7.5 % a year. The left one pays simple interest, on the ₹1,00,000 alone. The right one adds each year's interest to the balance and pays the next year's interest on everything.
- Year 1 is the same. In the first year both pay 7.5 % of ₹1,00,000, which is ₹7,500. Nothing has been added yet, so there is no interest on interest.
- Year 2 pulls apart. Simple interest pays ₹7,500 again. Compound interest pays 7.5 % of ₹1,07,500, which is ₹8,062.50: the extra ₹562.50 is 7.5 % of the first year's ₹7,500.
- Year 3 pulls further. Simple interest pays ₹7,500 a third time. Compound interest pays 7.5 % of ₹1,15,562.50, which is ₹8,667.19, because two years of interest are now earning too.
- The gap is interest on interest. After three years the compound deposit is ₹1,729.69 ahead, all of it interest earned on interest. The gap grows every year it stays invested, to ₹5,50,496 after 30 years.
In year 2 the compound side earned ₹562.50 more, which is 7.5 % of the first year’s ₹7,500: interest on interest. Multiplying by 1.075 once a year gives the balance after any number of years at once:
In words: the balance after t years is the principal times one plus the rate, multiplied by itself once for each year. After three years, ₹1,00,000 × 1.075 × 1.075 × 1.075 = ₹1,24,229.69. The program below works out both kinds of interest over the first three years and then over 30:
"""Simple and compound interest on the same deposit, year by year.
Rs 1,00,000 at 7.5 % a year. Simple interest pays 7.5 % of the first Rs 1,00,000 every year. Compound interest,
added once a year, pays 7.5 % of the whole balance, so the interest of earlier years earns interest too. 7.5 %
compounded yearly is the rate India Post lists for Kisan Vikas Patra; the deposit here is an example, not advice.
Money is worked with the decimal module and rounded half up.
"""
from decimal import ROUND_HALF_UP, Decimal
def inr(amount, places="1"):
"""Rupees with Indian digit grouping: 124229.6875 -> "₹1,24,230"; places="0.01" keeps paise."""
value = Decimal(amount).quantize(Decimal(places), rounding=ROUND_HALF_UP)
whole, _, paise = str(abs(value)).partition(".")
head, tail = whole[:-3], whole[-3:]
groups = []
while len(head) > 2:
groups.insert(0, head[-2:])
head = head[:-2]
if head:
groups.insert(0, head)
text = ",".join(groups + [tail]) if groups else tail
return "₹" + text + ("." + paise if paise else "")
PRINCIPAL = Decimal(100000)
RATE = Decimal("0.075")
print(f"{inr(PRINCIPAL)} at 7.5 % a year, interest added once a year")
print()
print("The first three years")
print(f"{'Year':<6}{'Simple interest':>17}{'Simple balance':>16}{'Compound interest':>19}{'Compound balance':>18}")
simple = compound = PRINCIPAL
for year in (1, 2, 3):
simple_interest = PRINCIPAL * RATE # always on the first Rs 1,00,000
compound_interest = compound * RATE # on everything in the deposit
simple += simple_interest
compound += compound_interest
print(
f"{year:<6}{inr(simple_interest, '0.01'):>17}{inr(simple, '0.01'):>16}"
f"{inr(compound_interest, '0.01'):>19}{inr(compound, '0.01'):>18}"
)
print(f"After 3 years compound interest is ahead by {inr(compound - simple, '0.01')}: interest earned on interest.")
print()
print("Longer horizons")
print(f"{'Years':<7}{'Simple':>12}{'Compound':>12}{'Gap':>12}{'Interest on interest':>22}")
for years in (1, 5, 10, 20, 30):
s = PRINCIPAL * (1 + RATE * years) # P(1 + rt)
c = PRINCIPAL * (1 + RATE) ** years # P(1 + r)^t
share = (c - s) / (c - PRINCIPAL) * 100 # part of all compound interest that is interest on interest
print(f"{years:<7}{inr(s):>12}{inr(c):>12}{inr(c - s):>12}{share.quantize(Decimal('0.1'), rounding=ROUND_HALF_UP):>20} %") Output
₹1,00,000 at 7.5 % a year, interest added once a year The first three years Year Simple interest Simple balance Compound interest Compound balance 1 ₹7,500.00 ₹1,07,500.00 ₹7,500.00 ₹1,07,500.00 2 ₹7,500.00 ₹1,15,000.00 ₹8,062.50 ₹1,15,562.50 3 ₹7,500.00 ₹1,22,500.00 ₹8,667.19 ₹1,24,229.69 After 3 years compound interest is ahead by ₹1,729.69: interest earned on interest. Longer horizons Years Simple Compound Gap Interest on interest 1 ₹1,07,500 ₹1,07,500 ₹0 0.0 % 5 ₹1,37,500 ₹1,43,563 ₹6,063 13.9 % 10 ₹1,75,000 ₹2,06,103 ₹31,103 29.3 % 20 ₹2,50,000 ₹4,24,785 ₹1,74,785 53.8 % 30 ₹3,25,000 ₹8,75,496 ₹5,50,496 71.0 %
Recorded with Python 3.14.8 on macOS 26 arm64. To run it yourself: mise exec python@3.14.8 -- python3 simple_vs_compound.py
The gap is ₹1,729.69 after three years and ₹5,50,496 after 30, when interest on interest makes up 71 % of all the compound interest earned. Time does the work: the gap after 30 years is more than 300 times the gap after three, because every year’s interest earns in every later year.
Key idea
Compound interest is interest on a balance that keeps growing, so it pulls away from simple interest slowly at first and then faster every year the money stays invested.
Checkpoint
Check: Compound interest on a growing balance
A quoted rate earns more when interest is added more often
Deposits quote a nominal rate: The yearly rate a deposit or loan quotes before compounding is counted. 7 % compounded quarterly is a nominal rate: 1.75 % is added four times a year., a yearly figure, together with a compounding frequency: How often interest is added to the balance in a year: yearly, half-yearly, quarterly, monthly or daily. The more often, the more a quoted yearly rate earns.: how often a share of it is added to the balance. “7 % compounded quarterly” means 7 % ÷ 4 = 1.75 % is added four times a year, and each addition earns in the quarters after it. India Post states the frequency for several of its schemes: its recurring deposit at 6.7 % is compounded quarterly, while Kisan Vikas Patra, the National Savings Certificate and the Public Provident Fund are compounded yearly.
In words: with m additions a year, each adds the rate divided by m, and there are m × t of them in t years. The effective annual rate: What a quoted rate earns in one year once compounding is counted: (1 + rate ÷ m)^m − 1 for m additions a year. 7 % compounded quarterly is 7.1859 % a year. says what that earns in one year, (1 + r ÷ m)^m − 1. For 7 % compounded quarterly, 1.0175 × 1.0175 × 1.0175 × 1.0175 − 1 = 7.1859 %. The model starts there, ₹1,00,000 for five years with interest added quarterly. Switch “Interest added” to yearly, then monthly and daily, and read the effective yearly rate:
₹1,00,000 at 7 % a year grows to ₹1,41,478 in 5 years; ₹41,478 of it is interest.
The numbers as a table
| Year | Paid in | Balance |
|---|---|---|
| 1 | ₹1,00,000 | ₹1,07,186 |
| 2 | ₹1,00,000 | ₹1,14,888 |
| 3 | ₹1,00,000 | ₹1,23,144 |
| 4 | ₹1,00,000 | ₹1,31,993 |
| 5 | ₹1,00,000 | ₹1,41,478 |
The program prints the same five frequencies side by side, and turns the effective rate back into a quoted one:
"""One quoted rate, five ways of adding the interest.
A nominal rate of 7 % a year is split into m equal parts, and one part is added m times a year:
amount = P(1 + r/m)^(m*t), and the effective annual rate is (1 + r/m)^m - 1. The last part turns the effective rate
back into the nominal rate that gives it, and the RD line uses the 6.7 % compounded quarterly that India Post lists
for its recurring deposit. Every rate here is an example for the arithmetic. Decimal module, rounded half up.
"""
from decimal import ROUND_HALF_UP, Decimal, getcontext
getcontext().prec = 40
def inr(amount):
"""Whole rupees with Indian digit grouping: 141478.3 -> "₹1,41,478"."""
whole = str(Decimal(amount).quantize(Decimal(1), rounding=ROUND_HALF_UP))
head, tail = whole[:-3], whole[-3:]
groups = []
while len(head) > 2:
groups.insert(0, head[-2:])
head = head[:-2]
if head:
groups.insert(0, head)
return "₹" + ",".join(groups + [tail]) if groups else "₹" + tail
def pct(fraction, places="0.0001"):
"""A fraction as a percentage: 0.0718590 -> "7.1859 %"."""
return f"{(fraction * 100).quantize(Decimal(places), rounding=ROUND_HALF_UP)} %"
PRINCIPAL = Decimal(100000)
NOMINAL = Decimal("0.07")
YEARS = 5
print(f"{inr(PRINCIPAL)} at 7 % a year (nominal), for {YEARS} years")
print(f"{'Interest added':<16}{'Times a year':>13}{'Effective rate':>16}{'After 5 years':>15}")
for name, m in (("yearly", 1), ("half-yearly", 2), ("quarterly", 4), ("monthly", 12), ("daily", 365)):
per_period = NOMINAL / m
effective = (1 + per_period) ** m - 1
amount = PRINCIPAL * (1 + per_period) ** (m * YEARS)
print(f"{name:<16}{m:>13}{pct(effective):>16}{inr(amount):>15}")
print()
quarterly_effective = (1 + NOMINAL / 4) ** 4 - 1
print(f"7 % compounded quarterly is {pct(quarterly_effective)} a year.")
back = 4 * ((1 + Decimal("0.07")) ** (Decimal(1) / 4) - 1)
print(f"The quarterly-compounded rate that is exactly 7 % a year: {pct(back)}.")
rd = (1 + Decimal("0.067") / 4) ** 4 - 1
print(f"6.7 % compounded quarterly is {pct(rd, '0.01')} a year.") Output
₹1,00,000 at 7 % a year (nominal), for 5 years Interest added Times a year Effective rate After 5 years yearly 1 7.0000 % ₹1,40,255 half-yearly 2 7.1225 % ₹1,41,060 quarterly 4 7.1859 % ₹1,41,478 monthly 12 7.2290 % ₹1,41,763 daily 365 7.2501 % ₹1,41,902 7 % compounded quarterly is 7.1859 % a year. The quarterly-compounded rate that is exactly 7 % a year: 6.8234 %. 6.7 % compounded quarterly is 6.87 % a year.
Recorded with Python 3.14.8 on macOS 26 arm64. To run it yourself: mise exec python@3.14.8 -- python3 frequency_ear.py
Yearly, the five years end at ₹1,40,255; quarterly at ₹1,41,478; daily at ₹1,41,902. Each step adds less than the one before, so daily compounding is worth only 0.0211 percentage points a year more than monthly. India Post’s 6.7 % compounded quarterly works out to 6.87 % a year. That is what the effective rate is for: two quotes can be compared only once both are turned into what they earn in a year.
Comparing two quotes by their headline rates
Wrong: “7.1 % compounded yearly beats 7 % compounded quarterly, because 7.1 is bigger.” Right: 7 % compounded quarterly is 7.1859 % a year, so it earns ₹85.90 more on ₹1,00,000 in a year. Compare effective rates, or quotes with the same frequency.
Checkpoint
Check: Compounding frequency and the effective rate
How long money takes to double: the rule of 72, then the exact answer
India Post states that money in Kisan Vikas Patra, at 7.5 % compounded yearly, doubles in 115 months, which is 9 years and 7 months. The rule of 72: A shortcut for the years money takes to double: 72 divided by the yearly rate in per cent. At 7.5 % it gives 9.6 years, close to the exact 9.584. gives a quick estimate: divide 72 by the rate in per cent. 72 ÷ 7.5 = 9.6 years, or 115.2 months. The exact time comes from solving (1 + r)^t = 2 for t:
In words: the natural logarithm of 2 divided by the natural logarithm of one plus the rate. At 7.5 %, 0.693147 ÷ 0.072321 = 9.584 years, which is 115.01 months: the scheme’s 115 months. The program checks the rule at six rates, then each rate and term in the National Savings Institute’s table of KVP rates since the scheme was relaunched in 2014:
"""How long money takes to double: the rule of 72 against the exact answer.
With interest added once a year at rate r, money doubles when (1 + r)^t = 2, so t = ln 2 / ln(1 + r) years exactly.
The rule of 72 estimates t as 72 / (r in per cent). Part 2 checks the rows of the National Savings Institute's table of
Kisan Vikas Patra rates after the 2014 relaunch, each a rate with the months in which the deposit doubles, and works
out the rate those months imply, 2^(12 / months) - 1. Decimal module, 40 digits, rounded half up.
"""
from decimal import ROUND_HALF_UP, Decimal, getcontext
getcontext().prec = 40
TWO = Decimal(2)
def q(value, places):
"""Round half up to the given places, for printing."""
return value.quantize(Decimal(places), rounding=ROUND_HALF_UP)
def inr(amount):
"""Rupees and paise with Indian digit grouping: 1999.849 -> "₹1,999.85"."""
whole, _, paise = str(q(Decimal(amount), "0.01")).partition(".")
head, tail = whole[:-3], whole[-3:]
groups = []
while len(head) > 2:
groups.insert(0, head[-2:])
head = head[:-2]
if head:
groups.insert(0, head)
return "₹" + ",".join(groups + [tail]) + "." + paise if groups else "₹" + tail + "." + paise
def exact_years(rate_pct):
"""Years to double at rate_pct per cent, compounded yearly: ln 2 / ln(1 + r)."""
return TWO.ln() / (1 + Decimal(rate_pct) / 100).ln()
print("Part 1: the rule of 72 and the exact doubling time, interest added yearly")
print(f"{'Rate':<8}{'Rule of 72':>12}{'Exact':>10}{'Rule is off by':>16}")
for rate in ("4", "6", "7.5", "9", "12", "18"):
rule = Decimal(72) / Decimal(rate)
exact = exact_years(rate)
print(f"{rate + ' %':<8}{str(q(rule, '0.01')) + ' y':>12}{str(q(exact, '0.01')) + ' y':>10}{str(q((rule - exact) * 12, '0.1')) + ' months':>16}")
print()
print("Part 2: Kisan Vikas Patra rows since the 2014 relaunch (rate, months to double)")
NSI_ROWS = [("8.7", 100), ("7.8", 110), ("7.7", 112), ("7.6", 113), ("7.5", 115), ("7.3", 118), ("6.9", 124), ("7.0", 123), ("7.2", 120)]
print(f"{'Rate':<7}{'Months':>8}{'Rule of 72':>12}{'Exact':>10}{'Rate the months imply':>23}")
for rate, months in NSI_ROWS:
rule_months = Decimal(72) / Decimal(rate) * 12
exact_months = exact_years(rate) * 12
implied = (TWO ** (Decimal(12) / months) - 1) * 100
print(f"{rate + ' %':<7}{months:>8}{q(rule_months, '0.1'):>12}{q(exact_months, '0.1'):>10}{str(q(implied, '0.001')) + ' %':>23}")
print()
years = exact_years("7.5")
print(f"At 7.5 % compounded yearly the exact doubling time is {q(years, '0.001')} years = {q(years * 12, '0.01')} months.")
grown = 1000 * (1 + Decimal("0.075")) ** (Decimal(115) / 12)
short = (2000 - grown) * 100
print(f"₹1,000 grown at 7.5 % a year for 115 months: {inr(grown)}, {q(short, '1')} paise short of the ₹2,000 a doubling pays.") Output
Part 1: the rule of 72 and the exact doubling time, interest added yearly Rate Rule of 72 Exact Rule is off by 4 % 18.00 y 17.67 y 3.9 months 6 % 12.00 y 11.90 y 1.3 months 7.5 % 9.60 y 9.58 y 0.2 months 9 % 8.00 y 8.04 y -0.5 months 12 % 6.00 y 6.12 y -1.4 months 18 % 4.00 y 4.19 y -2.3 months Part 2: Kisan Vikas Patra rows since the 2014 relaunch (rate, months to double) Rate Months Rule of 72 Exact Rate the months imply 8.7 % 100 99.3 99.7 8.673 % 7.8 % 110 110.8 110.7 7.855 % 7.7 % 112 112.2 112.1 7.709 % 7.6 % 113 113.7 113.6 7.639 % 7.5 % 115 115.2 115.0 7.501 % 7.3 % 118 118.4 118.1 7.303 % 6.9 % 124 125.2 124.7 6.938 % 7.0 % 123 123.4 122.9 6.996 % 7.2 % 120 120.0 119.6 7.177 % At 7.5 % compounded yearly the exact doubling time is 9.584 years = 115.01 months. ₹1,000 grown at 7.5 % a year for 115 months: ₹1,999.85, 15 paise short of the ₹2,000 a doubling pays.
Recorded with Python 3.14.8 on macOS 26 arm64. To run it yourself: mise exec python@3.14.8 -- python3 doubling.py
The rule is nearly exact around 7.5 to 9 % and drifts away on both sides: at 4 % it says 18 years where 17.67 is right, and at 18 % it says 4 years where 4.19 is right. In the scheme’s table the months, not the rounded rate, decide: 124 months at “6.9 %” means a deposit that doubles at 6.938 % a year. Walk through the rates in order:
- 2014 to 2016
8.7 % a year, doubling in 100 months relaunch
The rule of 72 gives 72 ÷ 8.7 = 8.28 years, or 99.3 months, and the exact doubling at 8.7 % a year takes 99.7 months. The scheme's 100 months are the exact time rounded up to a whole month.
- 2016 to 2017
Three cuts, from 110 to 113 months rate cut
The rate fell to 7.8 %, then 7.7 %, then 7.6 %, and the doubling period grew to 110, 112 and 113 months. At these rates the rule of 72 is within a month of the exact answer.
- 2017
7.5 % a year, doubling in 115 months
The rule says 9.6 years, or 115.2 months; the exact time at 7.5 % is 115.01 months. Formula and scheme agree to within a day, and the rule is about six days long.
- 2018
7.3 % a year, doubling in 118 months rate cut
The rule says 118.4 months and the exact time is 118.1. A cut of 0.2 percentage points added three months to the wait.
- 2018 to 2020
Back up to 7.7 %, then 7.6 % rate raised
The doubling period went back to 112 months, then 113, the same pairs of rate and months as in 2016 and 2017.
- 2020 to 2022
6.9 % a year, doubling in 124 months rate cut
The rule says 125.2 months and the exact time is 124.7. The listed 124 months mean the money doubles a little faster than 6.9 % would give, at 6.938 % a year.
- 2022 to 2023
7.0 %, then 7.2 % rate raised
The doubling period shortened to 123 months, then 120. At 7.2 % the rule gives exactly 120 months, while the exact time is 119.6.
- 2023 onwards
7.5 % a year, doubling in 115 months current
The rate India Post lists for Kisan Vikas Patra today, compounded yearly, with the amount invested doubling in 115 months, which is 9 years and 7 months.
The timeline has 8 events, from 2014 to 2016 to 2023 onwards.
At every rate in the table, from 6.9 % to 8.7 %, the rule of 72 lands less than 0.6 of a month from the exact doubling time, and the scheme’s months within a month of it.
Estimate with 72, decide with the formula
The rule of 72 is for checking a claim in your head; when a choice depends on a few months, work out ln 2 ÷ ln(1 + r), or read the doubling period the scheme itself states.
Checkpoint
Check: Doubling time: rule of 72 and exact
Interest that is paid out never compounds
India Post’s A five-year post office deposit that pays its interest out to the depositor every month. pays 7.4 % a year, and pays the interest out every month. On a deposit of ₹1,00,000 that is 7.4 % ÷ 12 of it, ₹616.67, every month, because the deposit itself never grows. Spent as it arrives, that interest never earns interest: it is simple interest. Compare it with the same interest left in at the same rate, which is an assumption made only to see the difference:
The drawing shows the whole scene; its 5 steps are listed below.
Every step as text
- Two ways to take the interest. Two deposits of ₹1,00,000 at 7.4 % a year. On the left the interest is paid out every month, as the Monthly Income Scheme pays it, and spent. On the right the same interest stays in and earns the same rate.
- Month 1 is the same. Both earn 7.4 % ÷ 12 of ₹1,00,000, which is ₹616.67. On the left it leaves the deposit; on the right the balance becomes ₹1,00,616.67.
- Month 2 earns ₹3.80 more. The left deposit is still ₹1,00,000, so it earns ₹616.67 again. The right one earns on ₹1,00,616.67, which is ₹620.47. The extra ₹3.80 is interest on the first month's interest.
- One year. After twelve months the left side has received ₹7,400, exactly 7.4 % of ₹1,00,000. The right side has earned ₹7,656, an effective 7.66 % a year.
- Five years. Over five years the left side receives ₹37,000, which is simple interest, 7.4 % × 5 of the deposit. The right side earns ₹44,609. The ₹7,609 between them is interest on interest that money taken out never earns.
The program follows both for five years, and then a second case where simple interest is the rule itself:
"""Interest taken out every month, or left in: the same rate, two different growths.
Part 1: Rs 1,00,000 for 5 years at 7.4 % a year, the rate India Post lists for its Monthly Income Scheme, whose
interest is paid out every month. Taken out and spent, the interest never earns interest, which is simple interest.
Left in at the same 7.4 % a year, added monthly (an assumption for the comparison), it compounds.
Part 2: a one-year time deposit closed after 8 months. The National Savings Institute's rule for closing between six
months and a year is simple interest at the Post Office Savings Account rate, 4 % a year.
Decimal module, rounded half up.
"""
from decimal import ROUND_HALF_UP, Decimal
def inr(amount, places="1"):
"""Rupees with Indian digit grouping: 144604.4 -> "₹1,44,604"; places="0.01" keeps paise."""
value = Decimal(amount).quantize(Decimal(places), rounding=ROUND_HALF_UP)
whole, _, paise = str(abs(value)).partition(".")
head, tail = whole[:-3], whole[-3:]
groups = []
while len(head) > 2:
groups.insert(0, head[-2:])
head = head[:-2]
if head:
groups.insert(0, head)
text = ",".join(groups + [tail]) if groups else tail
return "₹" + text + ("." + paise if paise else "")
PRINCIPAL = Decimal(100000)
RATE = Decimal("0.074")
MONTHLY = RATE / 12
print(f"Part 1: {inr(PRINCIPAL)} at 7.4 % a year for 5 years")
print(f"Interest for one month: 7.4 % / 12 of {inr(PRINCIPAL)} = {inr(PRINCIPAL * MONTHLY, '0.01')}")
print(f"{'After year':<12}{'Paid out: received':>20}{'Left in: balance':>18}{'Difference':>12}")
received = Decimal(0)
balance = PRINCIPAL
for month in range(1, 61):
received += PRINCIPAL * MONTHLY # always on the first Rs 1,00,000
balance += balance * MONTHLY # on the whole balance
if month % 12 == 0:
print(f"{month // 12:<12}{inr(received):>20}{inr(balance - PRINCIPAL):>18}{inr(balance - PRINCIPAL - received):>12}")
print(f"Paid out, the 5 years earn {inr(received)}: exactly 7.4 % × 5 = 37 % of the deposit, simple interest.")
print(f"Left in, they earn {inr(balance - PRINCIPAL)}: an effective {((1 + MONTHLY) ** 12 - 1) * 100:.2f} % a year.")
print()
print(f"Part 2: a one-year time deposit of {inr(PRINCIPAL)} closed after 8 months")
early = PRINCIPAL * Decimal("0.04") * 8 / 12
print(f"Simple interest at 4 % a year for 8 months: {inr(early, '0.01')}") Output
Part 1: ₹1,00,000 at 7.4 % a year for 5 years Interest for one month: 7.4 % / 12 of ₹1,00,000 = ₹616.67 After year Paid out: received Left in: balance Difference 1 ₹7,400 ₹7,656 ₹256 2 ₹14,800 ₹15,899 ₹1,099 3 ₹22,200 ₹24,772 ₹2,572 4 ₹29,600 ₹34,325 ₹4,725 5 ₹37,000 ₹44,609 ₹7,609 Paid out, the 5 years earn ₹37,000: exactly 7.4 % × 5 = 37 % of the deposit, simple interest. Left in, they earn ₹44,609: an effective 7.66 % a year. Part 2: a one-year time deposit of ₹1,00,000 closed after 8 months Simple interest at 4 % a year for 8 months: ₹2,666.67
Recorded with Python 3.14.8 on macOS 26 arm64. To run it yourself: mise exec python@3.14.8 -- python3 payout_vs_reinvest.py
Paid out, the five years bring ₹37,000, exactly 7.4 % × 5 of the deposit. Left in, they earn ₹44,609, because the balance grows every month, an effective 7.66 % a year. A monthly payout is not a worse deal: it is what someone who lives on the interest needs. It just cannot compound, because nothing stays behind to earn.
Closing a deposit early can switch compounding off by rule. The National Savings Institute’s rule for a post office time deposit closed after six months but before a year is simple interest at the Post Office Savings Account rate, 4 % a year: ₹1,00,000 closed after eight months earns ₹2,666.67, whatever rate the deposit was opened at.
Checkpoint
Check: Interest paid out grows like simple interest
Practise: interest, rates and doubling
Practice picks its first question from the idea your answers have found hardest so far, from simple interest to payouts. Work rupee amounts to the nearest rupee and rates to two decimal places, unless a question says otherwise:
Practice that adapts to you
Practise this lesson
14 questions about 5 ideas of this lesson. Each answer is explained at once, and what you get right is kept in this browser.
Check a deposit of your own
Take a deposit you hold or are offered. Turn its quoted rate into an effective yearly rate with its compounding frequency, estimate its doubling time with the rule of 72, then check it with ln 2 ÷ ln(1 + r).
Interview questions
Warm-up (fresher): What is the difference between simple and compound interest?
Simple interest is worked out on the principal alone, so ₹1,00,000 at 7.5 % earns ₹7,500 every year, ₹2,25,000 in 30 years. Compound interest is worked out on the whole balance, interest already added included, so the same deposit earns ₹7,500 in the first year, ₹8,062.50 in the second, and grows to ₹8,75,496 in 30 years. The difference is interest on interest, and it grows with time: 13.9 % of all the compound interest after 5 years, 71 % after 30. Compounding needs the interest to stay invested; interest paid out and spent grows like simple interest.
Warm-up (fresher): What does an effective annual rate tell you that a quoted rate does not?
A quoted, or nominal, rate is split into equal parts that are added through the year. The effective annual rate says what those parts earn in one year once each has compounded: (1 + r ÷ m)^m − 1 for m additions a year. 7 % added quarterly is 7.1859 % a year, and added monthly, 7.2290 %. Two deposits can be compared only on effective rates, or on the same frequency: 7 % compounded quarterly earns more than 7.1 % compounded yearly, although its headline rate is lower.
Key takeaways
- Simple interest is principal × rate × time: the same amount every year, because interest already earned is never put to work.
- Compound interest is worked out on a growing balance, P × (1 + r)^t: on ₹1,00,000 at 7.5 % the gap from simple interest is ₹1,729.69 after three years and ₹5,50,496 after 30.
- A quoted rate earns more when interest is added more often: 7 % compounded quarterly is 7.1859 % a year, and only effective rates can be compared with each other.
- The rule of 72 estimates the years to double; ln 2 ÷ ln(1 + r) gives them exactly, 115.01 months at 7.5 %, which matches the 115 months stated for Kisan Vikas Patra.
- Interest paid out and spent never compounds: ₹1,00,000 at 7.4 % paid monthly brings ₹37,000 in five years, against ₹44,609 when the interest stays in.
Terms in this lesson
- compound interest
- Interest worked out on the whole balance, interest added earlier included, so each period pays more than the last while the money stays invested.
- compounding frequency
- How often interest is added to the balance in a year: yearly, half-yearly, quarterly, monthly or daily. The more often, the more a quoted yearly rate earns.
- effective annual rate
- What a quoted rate earns in one year once compounding is counted: (1 + rate ÷ m)^m − 1 for m additions a year. 7 % compounded quarterly is 7.1859 % a year.
- nominal rate
- The yearly rate a deposit or loan quotes before compounding is counted. 7 % compounded quarterly is a nominal rate: 1.75 % is added four times a year.
- principal
- The amount put into a deposit or borrowed in a loan, on which interest is worked out. In a deposit of ₹1,00,000 at 7.5 % a year, the principal is ₹1,00,000.
- rule of 72
- A shortcut for the years money takes to double: 72 divided by the yearly rate in per cent. At 7.5 % it gives 9.6 years, close to the exact 9.584.
- simple interest
- Interest worked out on the principal alone, as principal × rate × time. Interest earned earlier earns nothing, so every year pays the same amount.
References
- Post office savings schemes: rates and how interest is added (Department of Posts, Government of India)
- Kisan Vikas Patra: interest rates since the relaunch (National Savings Institute, Ministry of Finance)
- Kisan Vikas Patra scheme (National Savings Institute, Ministry of Finance)
- National Savings Time Deposit Account scheme (National Savings Institute, Ministry of Finance)
- Interest rates on national savings schemes (National Savings Institute, Ministry of Finance)
Related tools
Report a problem with this lesson
Kept only in this browser. Your Learn progress