Technical Annex to Policy Brief #1

Examining social security allowances to make them sustainable equitable and effective

Author

EcoLab (MoF)

Published

April 28, 2024

Abstract
This technical annex contains the R code used for the Policy Brief and is interactive.

1 TECHNICAL ANNEX

1.1 Step 1: Load libraries required and read in raw data file

The analyses uses R (IDE Rstudio). The UN single age, single year population projections are loaded along with the libraries required. The raw data file containing UN population projections is in excel and called “pop.xlsx”. We will also load the following libraries required by R for the data processing, analyses and plots: ggplot2 (Wickham 2016), dplyr (Wickham et al. 2023), plyr (Wickham 2011), readxl (Wickham and Bryan 2023) and plotly (Sievert 2020).

Note: in the code below, please use the correct file path to your pop.xlsx file. In my case, this file is located in a folder on my desktop called ECOLABTRAINING. Please change accordingly.

Code
rm(list=ls())
library(ggplot2)
library(dplyr)
library(plyr)
library(readxl)
library(plotly)
pop <- read_excel("~/Desktop/ECOLABTRAINING/pop.xlsx")

The pop data file, when loaded into R looks as follows.

Code
head(pop)
# A tibble: 6 × 3
    age  year  tpop
  <dbl> <dbl> <dbl>
1     0  2020  545.
2     1  2020  542.
3     2  2020  540.
4     3  2020  540.
5     4  2020  541.
6     5  2020  543.

The data file contains three variables: age, year and tpop. Age runs from 0 to 100 (101 age groups) and year runs from 2020 to 2065 (46 years). tpop contains the total population of each age group. Hence there are 46 \(\times\) 101 (4646) rows of data (1 row for each age in each year) and 3 columns (age, year and total population).

1.2 Step 2: Processing data

This file format, as rich as it may be is not useful for our purposes as we are more focused on the total of under-fives and senior citizen’s rather than individual ages (which is tracked in the appendix). For our purposes, we just need for every year, the total number of U5 children, the total number of senior citizens (and other age groups we may be interested in) rather than the individual ages themselves.

We first create dummy variables for the following age groups: U5, School Age (SA, 5-17), Working Age (WA, 18-68), and Old Age (OA, 68+). We can see what has been created by looking at the first few lines of our data file.

Code
pop$retage<-ifelse(pop$year<=2022,70,68)
pop$u5<-ifelse(pop$age<5,1,0)
pop$sa<-ifelse(pop$age>4 & pop$age<18,1,0)
pop$wa<-ifelse(pop$age>17 & pop$age<pop$retage,1,0)
pop$oa<-ifelse(pop$age>=pop$retage,1,0)
# A tibble: 6 × 8
    age  year  tpop retage    u5    sa    wa    oa
  <dbl> <dbl> <dbl>  <dbl> <dbl> <dbl> <dbl> <dbl>
1     0  2020  545.     70     1     0     0     0
2     1  2020  542.     70     1     0     0     0
3     2  2020  540.     70     1     0     0     0
4     3  2020  540.     70     1     0     0     0
5     4  2020  541.     70     1     0     0     0
6     5  2020  543.     70     0     1     0     0

We then aggregate these dummies by year to get the total count of U5 children, SA children WA adults and OA elderly. Then the files are merged together.

Code
u5<-aggregate(tpop~year,data=subset(pop,u5==1),sum)
sa<-aggregate(tpop~year,data=subset(pop,sa==1),sum)
oa<-aggregate(tpop~year,data=subset(pop,oa==1),sum)
wa<-aggregate(tpop~year,data=subset(pop,wa==1),sum)
tpop<-aggregate(tpop~year,data=pop,sum)
df <- merge(u5, sa, by = "year", all = TRUE)
df <- merge(df, oa, by = "year", all = TRUE)
df <- merge(df, wa, by = "year", all = TRUE)
df <- merge(df, tpop, by = "year", all = TRUE)
# Rename the columns
colnames(df) <- c("year", "u5_tpop", "sa_tpop", "oa_tpop", "wa_tpop", "tpop")
# Fill NA values with 0 if any (not required)
df[is.na(df)] <- 0

Finally, we have the following data file (df) and first few lines of the data file are shown below:

Code
head(df)
  year  u5_tpop  sa_tpop  oa_tpop  wa_tpop     tpop
1 2020 2706.773 7576.564 1033.148 17820.32 29136.81
2 2021 2708.100 7469.172 1072.755 18424.89 29674.92
3 2022 2716.798 7379.726 1113.678 19015.38 30225.58
4 2023 2727.158 7302.036 1421.545 19318.97 30769.71
5 2024 2728.192 7231.396 1468.258 19857.84 31285.68
6 2025 2714.069 7163.153 1515.139 20365.08 31757.45

We have transformed the information in the original UN population data file into a format useful for our purposes. Each row in the file contains a specific year from 2020 to 2065 (46 rows). The data for each year hold the U5 population, the SA population, WA population, OA population and the total population. Armed with this information, it becomes possible to look into future costs as beneficiaries will have to come from this pool of projections.

1.2.1 Further processing

Convert population data to 1000s, derive dependency ratios for each year, and, derive growth rates for the population sub groups for visual plotting. The first few lines of the data file are now:

  year  u5_tpop  sa_tpop  oa_tpop  wa_tpop     tpop  dep_yng  dep_old  dep_tot
1 2020 2.706773 7.576564 1.033148 17.82032 29.13681 57.70567 5.797583 63.50325
2 2021 2.708100 7.469172 1.072755 18.42489 29.67492 55.23653 5.822313 61.05885
3 2022 2.716798 7.379726 1.113678 19.01538 30.22558 53.09662 5.856723 58.95335
4 2023 2.727158 7.302036 1.421545 19.31897 30.76971 51.91371 7.358286 59.27200
5 2024 2.728192 7.231396 1.468258 19.85784 31.28568 50.15444 7.393846 57.54829
6 2025 2.714069 7.163153 1.515139 20.36508 31.75745 48.50077 7.439886 55.94065
        u5gro      sagro    wagro     oagro  tpopgro
1          NA         NA       NA        NA       NA
2  0.04902517 -1.4174235 3.392587  3.833623 1.846846
3  0.32118459 -1.1975357 3.204827  3.814757 1.855644
4  0.38133126 -1.0527491 1.596555 27.644166 1.800223
5  0.03791493 -0.9674014 2.789326  3.286073 1.676896
6 -0.51766884 -0.9437044 2.554382  3.192967 1.507910

We have all the information we need to produce visualizations of the demographic transition as well as make estimates about costs using the underlying population projections to derive the flow of beneficiaries.

1.3 Step 3: Visualizing Nepal’s demographic transition

The following visualizations show Nepal’s demographic transition using our transformed data set. Population growth will turn negative after 2050 after which point the population dependency ratio starts rising. The population of children, including under-five children declines due to the fertility drop in Nepal.

1.3.1 Animated pyramid

Code
f<-plot_ly(pop, x = ~age, y = ~(tpop),type = "bar",
           frame = ~year,colors="Blues_r",name="Population (000)")%>%
  layout(xaxis = list(title = "Age"), yaxis = list(title = "Population")) %>%
  animation_opts(frame = 75, redraw = FALSE)
f

1.3.2 Population dependency ratio and its changes over time

Code
# Population dependency ratios
g<-ggplot(subset(df,year<=2065)) +
  geom_point(aes(x=year,y=u5_tpop,color='U5')) +
  geom_point(aes(x=year,y=sa_tpop,color='SA'))+
  geom_point(aes(x=year,y=wa_tpop,color='WA'))+
  geom_point(aes(x=year,y=oa_tpop,color='OA'))+
  geom_point(aes(x=year,y=tpop,color='Total'))+
  labs(x = "Year", y = "Population (Mill)") +
  ggtitle("Population")+
  theme_minimal()+
  scale_color_manual(name = "Legend",
                     values = c("U5" = "blue",
                                "SA" = "orange",
                                "WA" = "green",
                                "OA"="red",
                                "Total"='purple'))
#guides(fill = guide_legend(title = "Legend")))
#g
ggplotly(g)

1.3.3 Population growth rates over time

Code
g<-ggplot(subset(df, year>2023)) +
  geom_col(aes(x = year, y = tpopgro, fill = tpopgro > 0),alpha=0.8) +
  geom_line(aes(x = year, y = oagro,color='OA')) +
  geom_line(aes(x = year, y = u5gro,color='U5')) +
  geom_line(aes(x = year, y = sagro,color='SA')) +
  geom_line(aes(x = year, y = wagro,color='WA')) +
  #geom_line(aes(x= year, y=mean(oagro)),color='purple',alpha=0.25)+
  #geom_line(aes(x= year, y=mean(u5gro)),color='red',alpha=0.25)+
  #geom_line(aes(x= year, y=mean(sagro)),color='pink',alpha=0.25)+
  #geom_line(aes(x= year, y=mean(wagro)),color='darkgreen',alpha=0.25)+
  labs(x = "Year", y = "Pct Change") +
  ggtitle("Growth over the years: Population and subgroups") +
  scale_fill_manual(name = "Change", values = c("red", "green"), labels = c("Decrease", "Increase")) +
  scale_color_manual(name = "Legend",
                     values = c("U5" = "red",
                                "SA" = "pink",
                                "WA" = "darkgreen",
                                "OA"="purple"))+
  theme_minimal()
g

1.4 Step 4: Calculate costs and NPV of costs for base case

In any year \(t\) (running from \(2020\) to \(2050\)), total costs are an aggregate of the U5 costs (\(U5_{t}\)) and the costs associated with senior citizens allowances (\(OA_{t}\)).

The costs associated with each of these components in any year are a product of the benefit levels and number of beneficiaries. Hence, the total costs for the U5CG, \(U5_{t} = \beta_{ct}*U5B_{t}\), where \(\beta_{ct}\) is the value of the U5CG (NPR \(6,384\)/year currently) and \(U5_{t}\) are the estimated number of beneficiaries in time \(t\). Similarly costs associated with the senior citizens allowances, \(OA_{t}=\beta_{ot} * OAB_{t}\), where \(\beta_{ot}\) is the annual benefit level for senior citizen’s allowances (currently NPR \(48000\)/year) and \(OAB_{t}\) denotes the flow of beneficiaries of the senior citizen’s allowances.

The number of beneficiaries are in turn, defined as a fraction of the underlying population bases that participate or are covered by these allowances. This is defined by the take-up rate. Hence, given the take up rate of \(\gamma_{ct}\), the flow of beneficiaries for the U5CG, \(U5B_{t} = \gamma_{ct} * U5P_{t}\). Currently, since the U5CG is not yet universal (although there are plans to make it so imminently), \(\gamma_{c0}\) is approximately \(45\%\). Similarly, \(OAB_{t} =\gamma_{ot} * OAP_{t}\). Triangulating between the beneficiary databases and the population forecasts, \(\gamma_{o}\) is assumed to be very high (\(100\%\)).

All the underlying population bases are known for all \(t\) since updated UN single age population forecasts are being used (U.N, Population Division, 2023). Hence \(U5P_{t}\) is the sum of the population aged \(0-4\) each time period \(t\), and \(OAP_{t}\) is the sum of individual’s aged \(r_{t}\) and above, the eligibility age for the senior citizen’s allowances (currently 68 years old or above). Hence costs at any time period \(C_{t}\) can be written as a sum of two components:

\[ C_{t} = [{\beta_{ct}\times\gamma_{ct}\times\sum_{a=0}^4 POP_{a,t} }]+ [{\beta_{ot}\times\gamma_{ot}\times\sum_{a=r_{t}}^{100} POP_{a,t} }] \]

Given that the dynamics of

\(POP_{t}\) are known from population projections (U.N, op. cit.), and the values of

\(\beta\) and \(\gamma\) are known for both groups, then costs are heavily dependent on the number of beneficiaries which are in turn reliant on the \(POP_{t}\) and the benefit levels \((\beta)\) as well as the retirement age \(r_{t}\). Or to put it simply:

\[\begin{equation*} C_{t} = f(\beta_{t},\Gamma_{t},r_{t},P_{t}) \end{equation*}\]

Where \(\beta_{t}\) denotes the vector of benefit levels for children and senior citizens, \(\Gamma_{t}\) is a vector comprising of the take-up or participation rates of under five children and senior citizens, \(r_t\) is the retirement age at \(t\), and \(P_{t}\) is a vector that contains the population of under five children and senior citizens. Any changes to these would result in an impact for \(C_{t}\). In particular \(P_{t}\) is expected to grow rapidly for the senior citizen’s while it is expected to reduce for the under-five age group. Hence the future dynamics of social assistance would be dominated by the senior citizen’s categories.

The net present value (NPV) is often used to create a summary statistic (from today’s perspective) of the total value of costs each year for a certain number of years, which in our case is till 2050. It is also possible to calculate, just as in the case of total costs, the NPV of the U5CG and the senior citizen’s allowances using the exact same methodology. Let \(\Delta_{t}\) denote the difference in time compared to 2024 (the distance of the future) and \(\rho_{t}\) denote the rate of discount for time period \(t\). Then:

\[\begin{equation*} NPV=\sum_{t=2024}^{t=2050}\dfrac{C_{t}}{(1+\rho_{t})^{\Delta_{t}}} \end{equation*}\]
Code
u5ben<-rep(532*12,nrow(u5)) # can be made to vary 
oaben<-rep(4000*12,nrow(oa)) ## benefit level 4000 per month ##
gdp<-4353 # nominal GDP
gdpgro<-0.05 # Growth in nominal GDP (including inflation)
df$gdp<-gdp*(1+gdpgro)^(df$year-2020)
turoa<-rep(1.05,nrow(oa))
turu50<-c(0.40,0.40,0.40,0.40,0.40,0.45,0.50,0.55,0.6,0.65,0.75)
turu51<-rep(0.80,nrow(u5)-length(turu50))
turu5<-c(turu50,turu51)
u5$cov<-u5$tpop*turu5
oa$cov<-oa$tpop*turoa
u5$tcost<-u5ben*u5$cov*1000/1000000000 #because population is in 000, convert to billion
oa$tcost<-oa$cov*oaben*1000/1000000000 #because population is in 000, convert to bill
df$u5ben<-u5$cov/1000
df$oaben<-oa$cov/1000
df$tben<-(u5$cov+oa$cov)/1000

df$oacost<-oa$tcost
df$u5cost<-u5$tcost
df$tcost<-df$oacost+df$u5cost
df$costgdp<-100*(df$tcost/df$gdp)
# Create discounted values
r<-0.05
df$tcost_pdv=df$tcost/((1+r)^(df$year-2024))
df$oacost_pdv=df$oacost/((1+r)^(df$year-2024))
df$u5cost_pdv=df$u5cost/((1+r)^(df$year-2024))

In the base case or status-quo scenario, it is assumed that current policy and demographics will prevail (this implies that the U5CG will be made universal by 2030). The U5 benefit levels are at NPR \(532\) per month and OA benefit levels are NPR \(4000\) per month. It is assumed that the take-up rate for the U5 child grant will increase from \(0.45\) to \(0.75\) by \(2030\) after which it will remain at \(80\%\) till 2065. Hence we have:

\(\beta_{ct} = 532*12\) = \(6,384\) for all \(t\)

\(\beta_{ot} = 4000*12\) =\(48,000\) for all \(t\)

\(\lambda_{ot} = 1\)

\(\lambda_{ut}=0.8\) if \(t>2030\) and \([0.45,0.75]\) when \(t \le 2030\)

\(r_{t} = 68\)

We can write the costs for each year in the base case as:

\[ C_{t}^0 = [{6384\times\gamma_{ct}\times\sum_{a=0}^4 POP_{a,t} }]+ [{48000\times\sum_{a=68}^{100} POP_{a,t} }] \]

The above equation is solvable if we know the path of \(\gamma_{ct}\) as all other values are known. For the status-quo or base case it is assumed that between \(2024\)-\(2030\), coverage would be increased gradually from \(45\%\) to \(75\%\) and after 2030, \(80\%\) of all under-five children would covered. The projection of beneficiaries is shown below:

Code
g<-ggplot(subset(df, year>2023 & year<2051)) +
  geom_line(aes(x=year,y=tben,color='Tot')) +
  geom_line(aes(x=year,y=oaben,color='OA'))+
  geom_line(aes(x=year,y=u5ben,color='U5'))+
  labs(x = "Year", y = "Beneficiaries (mill.)") +
  ggtitle("Beneficiaries 2024-2050 (Base case)")+
  theme_minimal()+
  scale_color_manual(name = "Legend",
                     values = c("OA" = "purple",
                                "U5" = "green",
                                "Tot" = "red"))+
  guides(fill = guide_legend(title = ""))
ggplotly(g)

Since the population of under-five children are expected to decline, the number of beneficiaries of the U5CG would decline in tandem after becoming universal in 2030. In the meanwhile, beneficiaries of the senior citizen’s allowances would begin to dominate beneficiaries. The decline in the U5 beneficiaries is more than offset by the increase in the senior citizen’s beneficiaries and the total number of beneficiaries rises continuously through the simulation horizon.

Costs under the base case will also increase continuously through the simulation horizon as they are driven by the size of the beneficiary pool in each component. It can be seen that senior citizen’s allowances, because of the demographic increase in the pool of beneficiaries as well as higher benefit levels, influence total costs so that it keeps rising even as the costs associated with U5CG decline after 2030. This can be seen in the figure below.

Code
g<-ggplot(subset(df,year>2023 & year<2051)) +
  geom_line(aes(x=year,y=tcost,color='total'))+
  geom_point(aes(x=year,y=oacost,color='oa'))+
  geom_col(aes(x=year,y=u5cost,color='u5'))+
  labs(x = "Year", y = "Costs (Bill NPR)") +
  ggtitle("Annual Costs 2024-2050 (Base Case)")+
  theme_minimal()+
  scale_color_manual(name = "Legend",
                     values = c("total" = "red",
                                "oa" = "purple",
                                "u5" = "green"))+
  guides(fill = guide_legend(title = "Legend"))
ggplotly(g)

These costs estimates are projections of future costs. The NPV is used to summarize the totality of costs from today’s perspective. If we assume \(\gamma_{t}\) = 0.05, then:

\[ NPV_{t}^{0}=\dfrac{C_{t}^{0}}{(1+0.05)^{\Delta_{t}}} \]

Where \(\Delta_{t}\) denotes \(t-2024\) the distance of the future from today. These projections are shown in the figure below.1

Code
g<-ggplot(subset(df,year>2023 & year<2051)) +
  geom_line(aes(x=year,y=tcost_pdv,color='total'))+
  geom_point(aes(x=year,y=oacost_pdv,color='oa'))+
  geom_col(aes(x=year,y=u5cost_pdv,color='u5'))+
  labs(x = "Year", y = "Costs (Bill NPR)") +
  ggtitle("NPV of costs 2024-2050 (Base Case)")+
  theme_minimal()+
  scale_color_manual(name = "Legend",
                     values = c("total" = "red",
                                "oa" = "purple",
                                "u5" = "green"))+
  guides(fill = guide_legend(title = "Legend"))
ggplotly(g)

The sum of these NPVs denotes the full fiscal liabilities when summed till

\(2050\) can be denoted by:

\[ NPV_{0}=\sum_{t=2024}^{t=2050} NPV_{t}^{0} \]

  • In Table 1, the sum of the NPVs for different time periods are shown. Total implicit pension liabilities (\(NPV_{0}\)) under the status quo or base case is NPR 1,813 billion (31% of current GDP). This can be split into the U5CG component liabilities of NPR 157 billion (3% of GDP)and NPR 1,656 billion (28% of GDP) for the senior citizen’s component (Table 1).

    Table 1: NPV of costs (Status Quo) NPR Bill.
    2024-2030 2030-2040 2040-2050 Total % GDP
    Total 548 688 577 1813 31
    Senior Citizens 492 621 543 1656 28
    U5 56 66 34 157 3

1.5 Step 5: Consider alternative scenarios

4 alternative scenarios were considered. These are shown below. The base case describes the status-quo situation and has already been discussed. Scenarios \(1\) and \(2\) are aimed at the U5 child social security allowances. The first scenario makes the U5CG universal in \(2025\). The second scenario increases the U5CG benefit level from NPR \(532\) per month to NPR \(1,216\) per month to align it closer to the minimum per capita per monthly consumption requirement of NPR \(6,082\).2 Scenarios \(3\) and \(4\) are for the senior citizens or old age social security allowances. In scenario \(3\), the benefit level for senior citizens are increased from NPR \(4000\), to NPR \(5,000\) per month - an increase of \(1000\) or \(25\%\). In scenario \(4\), in addition to the benefit level increase, retirement ages are raised from \(68\) to \(72\) after \(2030\).

The flow of beneficiaries changes in scenario \(1\) and \(4\). The benefit levels change in scenario \(2\) and \(3\).

1.5.1 Scenario 1: Making the U5CG universal in 2025

Code
turu501<-c(0.40,0.40,0.40,0.40,0.40)
turu511<-rep(0.80,nrow(u5)-length(turu501))
turu51<-c(turu501,turu511)
turoa1<-rep(1.05,nrow(oa))

u5$cov1<-u5$tpop*turu51
oa$cov1<-oa$tpop*turoa1

u5$tcost1<-u5ben*u5$cov1*1000/1000000000 #because population is in 000, convert to billion
oa$tcost1<-oa$cov1*oaben*1000/1000000000 #because population is in 000, convert to bill

df$u5ben1<-u5$cov1/1000
df$oaben1<-oa$cov1/1000
df$tben1<-(df$u5ben1+df$oaben1)

df$oacost1<-oa$tcost1
df$u5cost1<-u5$tcost1
df$tcost1<-df$oacost+df$u5cost1
df$cost1gdp<-100*(df$tcost1/df$gdp)

df$tcost1_pdv<-df$tcost1/((1+r)^(df$year-2024))
df$oacost1_pdv<-df$oacost1/((1+r)^(df$year-2024))
df$u5cost1_pdv<-df$u5cost1/((1+r)^(df$year-2024))

In this scenario, the U5 child grant is made universal while all other parameters are left unchanged. In this scenario the time path for \(\gamma_{ct}\) is that it rises to \(80\%\) in \(t=2025\). Hence \(\gamma_{t} = 0.8\%\) for \(t \ge 2025\) and \(\gamma_{ct} = 0.45\) for \(t=2024\). This scenario just compresses the time path of the new U5CG beneficiaries being added and does not significantly affect overall costs relative to the base line scenario.

We have: \(C_{t}^1 > C_{t}^0\) for \(t < 2030\) but \(C_{t}^1 = C_{t}^0\) for \(t \ge 2030\).

\(\beta_{ct} = 532*12 = 6,384\)

\(\beta_{ot} = 4000*12 = 48,000\)

\(\gamma_{ct} = 0.8\) if \(t \ge 2025\) and \(0.45\) if \(t = 2024\)

Total costs are now written (for \(t \ge 2025\)) as:

\[ C_{t}^1 = [{6384\times.8\times\sum_{a=0}^4 POP_{a,t} }]+ [{48000\times\sum_{a=68}^{100} POP_{a,t} }] \]

In \(t=2024\), \(C_{t}^{2} = C_{t}^{1} = C_{t}^{0}\). The flow of beneficiaries under scenario 1 would change while the senior citizen’s component is left unaffected. The projected beneficiaries are shown below and shows a spike in the U5CG beneficiaries in 2025, followed by a declining trajectory over time.

Code
g<-ggplot(subset(df, year>2023 & year<2051)) +
  geom_line(aes(x=year,y=u5ben1,color='U5')) +
  geom_line(aes(x=year,y=oaben1,color='OA')) +
  geom_line(aes(x=year,y=tben1,color='Tot')) +
  geom_col(aes(x=year,y=u5ben,color='U5 Base Case')) +
  geom_point(aes(x=year,y=tben,color='Tot Base Case')) +
  labs(x = "Year", y = "Beneficiaries") +
  ggtitle("Beneficiaries (Scenario 1)")+
  theme_minimal()+
  scale_color_manual(name = "Legend",
                     values = c("U5" = "green",
                                "OA" = "purple",
                                "Tot" = "red",
                                "U5 Base Case" = "pink",
                                "Tot Base Case" = "darkgreen"))+
  guides(fill = guide_legend(title = "Legend"))
ggplotly(g)

The annual costs and their net present values are shown below:

Code
g<-ggplot(subset(df,year>2023 & year<2051)) +
  geom_line(aes(x=year,y=tcost1,color='Total'))+
  geom_point(aes(x=year,y=oacost1,color='OA'))+
  geom_col(aes(x=year,y=u5cost1,color='U5'))+
  geom_line(aes(x=year,y=u5cost,color='U5 Base Case'))+
  geom_point(aes(x=year,y=tcost,color='Total Base Case'))+
  labs(x = "Year", y = "Costs (Bill NPR)") +
  ggtitle("Annual costs 2024-2050 (Scenario 1)")+
  theme_minimal()+
  scale_color_manual(name = "Legend",
                     values = c("total" = "red",
                                "OA" = "purple",
                                "U5" = "green",
                                "U5 Base Case"="pink",
                                "Total Base Case"= "darkgreen"
                                 ))+
  guides(fill = guide_legend(title = "Legend"))
ggplotly(g)
Code
g<-ggplot(subset(df,year>2023 & year<2051)) +
  geom_line(aes(x=year,y=tcost1_pdv,color='Total'))+
  geom_point(aes(x=year,y=oacost1_pdv,color='OA'))+
  geom_col(aes(x=year,y=u5cost1_pdv,color='U5'))+
  geom_point(aes(x=year,y=u5cost_pdv,color='U5 Base Case'))+
  geom_point(aes(x=year,y=tcost_pdv,color='Total Base Case'))+
  labs(x = "Year", y = "Costs (Bill NPR)") +
  ggtitle("NPV of annual costs 2024-2050 (Scenario 1)")+
  theme_minimal()+
  scale_color_manual(name = "Legend",
                     values = c("Total" = "red",
                                "OA" = "purple",
                                "U5" = "green",
                                "U5 Base Case"="pink",
                                "Total Base Case"="darkgreen"))+
  guides(fill = guide_legend(title = "Legend"))
ggplotly(g)

The net present values are derived as:

\[ NPV_{t}^{1}=\dfrac{C_{t}^{1}}{(1+0.05)^{\Delta_{t}}} \]

Where \(\Delta_{t}\) denotes the distance of the future from \(t=2024\) for any time \(t\). The sum of these net present values till \(2050\) denotes the total fiscal liabilities associated with scenario 1 till \(2050\) and may be written as:

\[ NPV_{1}=\sum_{t=2024}^{t=2050} NPV_{t}^{1} \]

  • Under scenario 1, the sum of the NPV of social security allowances, \(NPV_{1}\), rises to NPR 1,832 billion, an increase of NPR 19 billion caused entirely by making the U5CG universal by 2025 (Table 2).

  • As a ratio to GDP, there is no change: it remains at \(31\%\). This scenario is fiscally neutral as the added costs in terms of GDP are negligible.

  • The U5CG components implicit liability rises from NPR 157 billion to NPR 176 billion. \(\Delta_{1}\) = NPR 19 billion till 2050 ( \(NPV_{1}\) - \(NPV_{0}\)). As a ratio to GDP these additional costs are negligible.

Table 2: NPV of costs (Scenario 1) NPR Bill
2024-2030 2030-2040 2040-2050 Total % GDP
Total 548 688 577 1832 31
Senior Citizens 492 621 543 1656 28
U5 76 66 34 176 3

1.5.2 Scenario 2: Raise the U5CG benefit level to NPR 1,216 in 2025 (in addition to making it universal in 2025)

Code
u5bena<-c(532*12,532*12,532*12,532*12,532*12) # Till 2024 same benefits
u5benb<-rep(1216*12,nrow(u5)-length(u5bena)) # raise benefit level to 1216 NPR in 2025
u5ben2<-c(u5bena,u5benb)
u5$tcost2<-u5ben2*u5$cov1*1000/1000000000 #because population is in 000, convert to billion
df$u5ben2<-u5$cov1/1000
df$oaben2<-df$oaben1
df$tben2<-df$oaben2+df$u5ben2
df$u5cost2<-u5$tcost2
df$oacost2<-df$oacost1
df$tcost2<-df$oacost2+df$u5cost2
df$cost2gdp<-100*(df$tcost2/df$gdp)

df$tcost2_pdv=df$tcost2/((1+r)^(df$year-2024))
df$oacost2_pdv=df$oacost2/((1+r)^(df$year-2024))
df$u5cost2_pdv=df$u5cost2/((1+r)^(df$year-2024))

In scenario 2, in addition to making the U5GCG universal in 2025, the benefit level is also raised to NPR \(1,216\) per month. This is in order to make the cash transfer more meaningful as a nutrition intervention because the minimum per capita consumption per month is NPR \(6,082\) (NLSS 2022/23). We can write the total costs for \(2024\) to be the same as the total costs from scenario 1. From \(2025\), it would become:

\[ C_{t}^2 = [{14592\times.8\times\sum_{a=0}^4 POP_{a,t} }]+ [{48000\times\sum_{a=68}^{100} POP_{a,t} }] \]

The costs associated with the benefit increase for the U5CG would rise exactly in proportion to the increase in the benefit levels (from \(532\) NPR to \(1,216\)NPR per month) in \(2025\). The projected costs and their net present values are shown below.

Code
g<-ggplot(subset(df,year>2023 & year<2051)) +
  geom_line(aes(x=year,y=tcost2,color='Total'))+
  geom_point(aes(x=year,y=oacost2,color='OA'))+
  geom_col(aes(x=year,y=u5cost2,color='U5'))+
  #geom_point(aes(x=year,y=u5cost,color='U5 Base Case'))+
  #geom_point(aes(x=year,y=u5cost1,color='U5 Scenario 1'))+
  #geom_point(aes(x=year,y=tcost1,color='Total Scenario 1'))+
  #geom_line(aes(x=year,y=tcost,color='Total Base Case'))+
  labs(x = "Year", y = "Costs (Bill NPR)") +
  ggtitle("Annual costs 2024-2050 (Scenario 2)")+
  theme_minimal()+
  scale_color_manual(name = "Legend",
                     values = c("Total" = "red",
                                "OA" = "purple",
                                "U5" = "green"))+
  guides(fill = guide_legend(title = "Legend"))
ggplotly(g)
Code
g<-ggplot(subset(df,year>2023 & year<2051)) +
  geom_line(aes(x=year,y=tcost2_pdv,color='total'))+
  geom_point(aes(x=year,y=oacost2_pdv,color='oa'))+
  geom_col(aes(x=year,y=u5cost2_pdv,color='u5'))+
  labs(x = "Year", y = "Costs (Bill NPR)") +
  ggtitle("NPV of annual costs 2024-2050 (Scenario 2)")+
  theme_minimal()+
  scale_color_manual(name = "Legend",
                     values = c("total" = "red",
                                "oa" = "purple",
                                "u5" = "green"))+
  guides(fill = guide_legend(title = "Legend"))
ggplotly(g)

For all \(t \ge 2025\), let

\[ \Delta_{t}^{1} = C_{t}^{2} - C_{t}^{1} \]

It is easy to see that

\[ \Delta_{t}^{1} = (14592 - 6384) \times 0.8\times\sum_{a=0}^{a=4}POP_{a,t}=8208\times\sum_{a=0}^{a=4}POP_{a,t} \]

So the difference in costs each year, \(t\) from \(2025\), is entirely attributable to the difference in benefit levels between scenarios 2 and 1.

  • Under scenario 2, \(C_{t}^{2}>C_{t}^{1}>C{t}^{0}\) for all \(t > 2025\). \(NPV^{2}\) is estimated to be NPR \(2,050\) (35% of GDP).

  • The increase in costs is completely due to the increase in the value of the U5CG from NPR \(532\) per month to NPR \(1,216\) per month. The NPV of costs associated with the U5CG till \(2050\)has risen to NPR \(394\) billion, which is about \(7\%\) of GDP.

  • The change in the NPV between the base case and this case, can be shown as \(\Delta_{2}\) = \(NPV_{2} - NPV_{0}\)=NPR \(237\) ( \(4\%\) of GDP). This includes \(\Delta_{1}\) whose values inNPR \(19\) billion.

  • As before, the senior citizen’s component continues to consume a significant share of expenditures because that component has not changed compared to the status quo.

Table 3: NPV of costs (Scenario 2) NPR Bill
2024-2030 2030-2040 2040-2050 Total % GDP
Total 656 773 621 2050 35
Senior Citizens 492 621 543 1656 28
U5 164 152 78 394 7

1.5.3 Scenario 3: Scenario 2 + raise benefit level of senior citizen’s allowances to NPR 5,000 per month

Code
oabena<-rep(4000*12,5) ## benefit level 4000 per month till 2024##
oabenb<-rep(5000*12,nrow(oa)-length(oabena))
oaben3<-c(oabena,oabenb)
oa$tcost3<-oa$cov*oaben3*1000/1000000000 #because population is in 000, convert to bill
df$oacost3<-oa$tcost3
df$u5cost3<-df$u5cost2
df$tcost3<-df$u5cost3+df$oacost3
df$u5ben3<-df$u5ben2
df$oaben3<-df$oaben2
df$tben3<-df$u5ben3+df$oaben3
df$oacost3_pdv<-df$oacost3/((1+r)^(df$year-2024))
df$u5cost3_pdv<-df$u5cost2_pdv
df$tcost3_pdv<-df$tcost3/((1+r)^(df$year-2024))

In this scenario, in addition to the assumptions in scenario 2, the senior citizen’s allowances are raised to NPR 5,000 in 2025. In other words, this scenario jointly models an increase in U5CG coverage, increased benefit levels for the U5CG and senior citizens in 2025. This scenario can also be used to isolate the impact of raising the senior citizen’s allowances by NPR 1,000. For the year 2024, the costs are unchanged compared to all other cases. For the years 2025 and beyond, costs can be written as (for \(t \ge 2025\)):

\[ C_{t}^3 = [{14592*.8\times\sum_{a=0}^4 POP_{a,t} }]+ [{60000\times\sum_{a=68}^{100} POP_{a,t} }] \]

The projected flow of costs and their discounted values are shown below.

Code
g<-ggplot(subset(df,year>2023 & year<2051)) +
  geom_line(aes(x=year,y=tcost3,color='Total'))+
  geom_point(aes(x=year,y=oacost3,color='OA'))+
  geom_col(aes(x=year,y=u5cost3,color='U5'))+
  #geom_point(aes(x=year,y=u5cost,color='U5 Base Case'))+
  #geom_point(aes(x=year,y=u5cost1,color='U5 Scenario 1'))+
  #geom_point(aes(x=year,y=tcost1,color='Total Scenario 1'))+
  #geom_line(aes(x=year,y=tcost,color='Total Base Case'))+
  labs(x = "Year", y = "Costs (Bill NPR)") +
  ggtitle("Annual costs 2024-2050 (Scenario 3)")+
  theme_minimal()+
  scale_color_manual(name = "Legend",
                     values = c("Total" = "red",
                                "OA" = "purple",
                                "U5" = "green"))+
  guides(fill = guide_legend(title = "Legend"))
ggplotly(g)
Code
g<-ggplot(subset(df,year>2023 & year<2051)) +
  geom_line(aes(x=year,y=tcost3_pdv,color='Total'))+
  geom_point(aes(x=year,y=oacost3_pdv,color='OA'))+
  geom_col(aes(x=year,y=u5cost3_pdv,color='U5'))+
  #geom_point(aes(x=year,y=u5cost,color='U5 Base Case'))+
  #geom_point(aes(x=year,y=u5cost1,color='U5 Scenario 1'))+
  #geom_point(aes(x=year,y=tcost1,color='Total Scenario 1'))+
  #geom_line(aes(x=year,y=tcost,color='Total Base Case'))+
  labs(x = "Year", y = "Costs (Bill NPR)") +
  ggtitle("PDV of costs 2024-2050 (Scenario 3)")+
  theme_minimal()+
  scale_color_manual(name = "Legend",
                     values = c("Total" = "red",
                                "OA" = "purple",
                                "U5" = "green"))+
  guides(fill = guide_legend(title = "Legend"))
ggplotly(g)

Under scenario \(3\), there is a sharp increase in costs in \(2025\) as benefits are raised by NPR \(1,000\). We have \(C_{t}^{3}\)>\(C_{t}^{2}\)>\(C_{t}^{1}\)>\(C_{t}^{0}\) for all \(t \ge 2025\). The difference in costs can be traceable directly to the increase in the benefit level. Compared to the base case, the difference in costs attributable to the benefit increase for senior citizen’s can be written as \(\Delta_{t}^{2}\) = \(C_{t}^{3} - C_{t}^{2}\)

\[ \Delta_{t}^{2} = (60000 - 48000) \times \sum_{a=r_{t}}^{a=100}POP_{a,t} = 12000 \times \sum_{a=r_{t}}^{a=100}POP_{a,t} \]

The net present values are derived as:

\[ NPV_{t}^{3}=\dfrac{C_{t}^{3}}{(1+0.05)^{\Delta_{t}}} \]

Where \(\Delta_{t}\) denotes the distance of the future from \(t=2024\) for any time \(t\). The sum of these net present values till \(2050\) denotes the total fiscal liabilities associated with scenario \(3\) till \(2050\) and may be written as:

\[ NPV_{3}=\sum_{t=2024}^{t=2050} NPV_{t}^{3} \]

  • Total implicit liabilities or \(NPV_{3}\) has risen to NPR \(2,445\) (\(41\%\) of GDP) and \(\Delta_{3}\) = \(NPV_{3} - NPV_{2}\) = NPR \(396\) billion (\(7/%\) of GDP). In other words, raising the senior citizen’s allowances by NPR \(1,000\) would cost more than making the child grant universal and raising the benefit level to NPR \(1,216\).
Table 4: NPV of costs (Scenario 3) NPR Bill
2024-2030 2030-2040 2040-2050 Total % GDP
Total 760 928 756 2445 41
Senior Citizens 596 777 678 2052 35
U5 164 152 78 394 7

1.5.4 Scenario 4: Scenario 3 + raise retirement age to 72 by 2030

Under this scenario, retirement age is raised to \(72\) after \(2030\). Hence we have:

\(r_t = 72\) for \(t \ge 2031\) and \(r_t\) = 68 for \(t<2031\)

\(\beta_{ct} = 1216\times 12 = 14529\) for \(t \ge 2025\)

\(\beta_{ot} = 5000\times12 = 60000\) for \(t\ge2025\)

\(\gamma_{ct} = 0.8\) if \(t \ge 2025\) and \(0.45\) if \(t = 2024\)

Hence we can write for \(t\ge2025\) the costs for each year as:

\[ C_{t}^4 = [{14592*.8*\sum_{a=0}^4 POP_{a,t} }]+ [{60000*\sum_{a=r_{t}}^{100} POP_{a,t} }] \]

The present discounted value of these costs are:

\[ NPV_{t}^{4}=\dfrac{C_{t}^{4}}{(1+0.05)^{\Delta_{t}}} \]

Where \(\Delta_{t}\) denotes the distance of the future from \(t=2024\) for any time \(t\). The sum of these net present values till \(2050\) denotes the total fiscal liabilities associated with scenario \(3\) till \(2050\) and may be written as:

\[ NPV_{4}=\sum_{t=2024}^{t=2050} NPV_{t}^{4} \]

The projected costs and their present discounted values are shown below:

Code
pop$retage1 <- ifelse(pop$year <=2022, 70,                        
                      ifelse(pop$year >= 2023 & pop$year <= 2030, 68, 72))

pop$oa4<-ifelse(pop$age>=pop$retage1,1,0)
oa1<-aggregate(tpop~year,data=subset(pop,oa4==1),sum)
oaben4<-oaben3
turoa4<-rep(1.05,nrow(oa1)) # Adjusting population for actual known values
oa1$cov4<-oa1$tpop*turoa4
oa1$tcost4<-oa1$cov4*oaben3*1000/1000000000 #because population is in 000, convert to bill
df$oaben4<-oa1$cov4/1000
df$u5ben4<-df$u5ben2
df$tben4<-df$oaben4+df$u5ben4
df$oacost4<-oa1$tcost4
df$u5cost4<-df$u5cost3
df$tcost4<-df$oacost4+df$u5cost3
df$tcost4_pdv<-df$tcost4/((1+r)^(df$year-2024))
df$oacost4_pdv<-df$oacost4/((1+r)^(df$year-2024))
df$u5cost4_pdv<-df$u5cost4/((1+r)^(df$year-2024))
Code
g<-ggplot(subset(df,year>2023 & year<2051)) +
  geom_line(aes(x=year,y=tcost4,color='Total'))+
  geom_point(aes(x=year,y=oacost4,color='OA'))+
  geom_col(aes(x=year,y=u5cost4,color='U5'))+
  #geom_point(aes(x=year,y=u5cost,color='U5 Base Case'))+
  #geom_point(aes(x=year,y=u5cost1,color='U5 Scenario 1'))+
  #geom_point(aes(x=year,y=tcost1,color='Total Scenario 1'))+
  #geom_line(aes(x=year,y=tcost,color='Total Base Case'))+
  labs(x = "Year", y = "Costs (Bill NPR)") +
  ggtitle("Annual costs 2024-2050 (Scenario 4)")+
  theme_minimal()+
  scale_color_manual(name = "Legend",
                     values = c("Total" = "red",
                                "OA" = "purple",
                                "U5" = "green"))+
  guides(fill = guide_legend(title = "Legend"))
ggplotly(g)
Code
g<-ggplot(subset(df,year>2023 & year<2051)) +
  geom_line(aes(x=year,y=tcost4_pdv,color='Total'))+
  geom_point(aes(x=year,y=oacost4_pdv,color='OA'))+
  geom_col(aes(x=year,y=u5cost4_pdv,color='U5'))+
  #geom_point(aes(x=year,y=u5cost,color='U5 Base Case'))+
  #geom_point(aes(x=year,y=u5cost1,color='U5 Scenario 1'))+
  #geom_point(aes(x=year,y=tcost1,color='Total Scenario 1'))+
  #geom_line(aes(x=year,y=tcost,color='Total Base Case'))+
  labs(x = "Year", y = "Costs (Bill NPR)") +
  ggtitle("NPV costs 2024-2050 (Scenario 4)")+
  theme_minimal()+
  scale_color_manual(name = "Legend",
                     values = c("Total" = "red",
                                "OA" = "purple",
                                "U5" = "green"))+
  guides(fill = guide_legend(title = "Legend"))
ggplotly(g)

Under this scenario:

\(C_{t}^{4}=C_{t}^{3}>C_{t}^{2}>C_{t}^{1}>C_{t}^{0}\) for \(t \le 2030\) and \(C_{t}^{4}\) \(<\) \(C_{t}^{0}\) for \(t \ge 2031\). Hence there are imminent savings in the medium to long term. The NPV of total costs are a little higher than the base case but there is considerable savings in the senior citizen’s expenses as the inflow of beneficiaries has been effectively reduced to the the retirement age increasing to \(72\) years after \(2030\).

  • Total implicit liabilities or \(NPV_{4}\) has risen reduced to NPR \(1,943\) (\(33\%\) of GDP of which the UG child grant would cost \(7\%\) of GDP and senior citizen’s \(26\%\)). The difference in costs between this case the scenario \(3\) can be written as \(\Delta_{4}\) = \(NPV_{4} - NPV_{3}\) = NPR \(-502\) billion (\(8\%\) of GDP).

  • In other words, raising the senior citizen’s allowances by NPR \(1,000\) is feasible only if matched by an increase in retirement age.

Table 5: NPV of costs (Scenario 4)
2024-2030 2030-2040 2040-2050 Total % GDP
Total 760 928 756 2445 41
Senior Citizens 596 777 678 2052 35
U5 164 152 78 394 7

1.6 Summary of findings

Total Costs and NPVs are plotted for all scenarios together. Separate plots are also drawn for U5CG and senior citizen’s allowances.

Code
g<-ggplot(subset(df,year>2023 & year<2051)) +
  geom_line(aes(x=year,y=tcost,color='base'))+
  geom_point(aes(x=year,y=tcost1,color='scenario 1'))+
  geom_point(aes(x=year,y=tcost2,color='scenario 2'))+
  geom_point(aes(x=year,y=tcost3,color='scenario 3'))+
  geom_line(aes(x=year,y=tcost4,color='scenario 4'))+
  labs(x = "Year", y = "Costs (Bill NPR)") +
  ggtitle("Total Costs (4 scenarios)")+
  theme_minimal()+
  scale_color_manual(name = "Legend",
                     values = c("base" = "red",
                                "scenario 1" = "purple",
                                "scenario 2" = "green",
                                "scenario 3" = "blue",
                                "scenario 4" = "orange"))+
  guides(fill = guide_legend(title = "Legend"))
ggplotly(g)
Code
g<-ggplot(subset(df,year>2023 & year<2051)) +
  geom_line(aes(x=year,y=tcost_pdv,color='base'))+
  geom_point(aes(x=year,y=tcost1_pdv,color='scenario 1'))+
  geom_point(aes(x=year,y=tcost2_pdv,color='scenario 2'))+
  geom_point(aes(x=year,y=tcost3_pdv,color='scenario 3'))+
  geom_line(aes(x=year,y=tcost4_pdv,color='scenario 4'))+
  labs(x = "Year", y = "NPV (Bill NPR)") +
  #ggtitle("NPV of Total Costs (4 scenarios)")+
  theme_minimal()+
  scale_color_manual(name = "Legend",
                     values = c("base" = "red",
                                "scenario 1" = "purple",
                                "scenario 2" = "green",
                                "scenario 3" = "blue",
                                "scenario 4" = "orange"))+
  guides(fill = guide_legend(title = "Legend"))
ggplotly(g)
Code
g<-ggplot(subset(df,year>2023 & year<2051)) +
  geom_line(aes(x=year,y=u5cost,color='base'))+
  geom_point(aes(x=year,y=u5cost1,color='scenario 1'))+
  geom_point(aes(x=year,y=u5cost2,color='scenario 2'))+
  geom_point(aes(x=year,y=u5cost3,color='scenario 3'))+
  geom_line(aes(x=year,y=u5cost4,color='scenario 4'))+
  labs(x = "Year", y = "Costs (Bill NPR)") +
  ggtitle("Figure 14: U5CG Costs (4 scenarios)")+
  theme_minimal()+
  scale_color_manual(name = "Legend",
                     values = c("base" = "red",
                                "scenario 1" = "purple",
                                "scenario 2" = "green",
                                "scenario 3" = "blue",
                                "scenario 4" = "orange"))+
  guides(fill = guide_legend(title = "Legend"))
ggplotly(g)
Code
g<-ggplot(subset(df,year>2023 & year<2051)) +
  geom_line(aes(x=year,y=u5cost_pdv,color='base'))+
  geom_point(aes(x=year,y=u5cost1_pdv,color='scenario 1'))+
  geom_point(aes(x=year,y=u5cost2_pdv,color='scenario 2'))+
  geom_point(aes(x=year,y=u5cost3_pdv,color='scenario 3'))+
  geom_line(aes(x=year,y=u5cost4_pdv,color='scenario 4'))+
  labs(x = "Year", y = "NPV (Bill NPR)") +
  #ggtitle("Figure 15: NPV of U5CG Costs (4 scenarios)")+
  theme_minimal()+
  scale_color_manual(name = "Legend",
                     values = c("base" = "red",
                                "scenario 1" = "purple",
                                "scenario 2" = "green",
                                "scenario 3" = "blue",
                                "scenario 4" = "orange"))+
  guides(fill = guide_legend(title = "Legend"))
ggplotly(g)
Table 6: NPV in NPR Bill - Summary of results (all scenarios)
Time Period Base Case Scenario 1 Scenario 2 Scenario 3 Scenario 4
2024-2030 548 568 656 760 760
2030-2040 688 688 773 928 653
2040-2050 577 577 621 756 530
Total 1813 1832 2050 2445 1943
Total as % GDP 31 31 35 41 33
Table 7: NPV in NPR Bill - Summary of results for U5 Child Grant (all scenarios)
Time Period Base Case Scenario 1 Scenario 2 Scenario 3 Scenario 4
2024-2030 56 76 164 164 164
2030-2040 66 66 152 152 152
2040-2050 34 34 78 78 78
Total 157 176 394 394 394
Total as % GDP 3 3 7 7 7
Table 8: NPV in NPR Bill - Summary of results for Senior Citizen’s Allowances (all scenarios)
Time Period Base Case Scenario 1 Scenario 2 Scenario 3 Scenario 4
2024-2030 492 492 492 596 596
2030-2040 621 621 621 777 653
2040-2050 543 543 543 678 530
Total 1656 1656 1656 2052 1943
Total as % GDP 28 28 28 35 26

References

Sievert, Carson. 2020. “Interactive Web-Based Data Visualization with r, Plotly, and Shiny.” https://plotly-r.com.
Wickham, Hadley. 2011. “The Split-Apply-Combine Strategy for Data Analysis” 40. https://www.jstatsoft.org/v40/i01/.
———. 2016. “Ggplot2: Elegant Graphics for Data Analysis.” https://ggplot2.tidyverse.org.
Wickham, Hadley, and Jennifer Bryan. 2023. “Readxl: Read Excel Files.” https://CRAN.R-project.org/package=readxl.
Wickham, Hadley, Romain François, Lionel Henry, Kirill Müller, and Davis Vaughan. 2023. “Dplyr: A Grammar of Data Manipulation.” https://CRAN.R-project.org/package=dplyr.

Footnotes

  1. These projections are sensitive to the choice of the discount rate. If they were higher then the NPV would be lower and vice-versa.↩︎

  2. This is derived from NLSS 2022/23 by dividing the minimum expenditure to meet basic food and non-food needs (NPR 72,980) by 12.↩︎