The DICE-99 Excel spreadsheet is contained in the file “Dice99 web page.xls.” 

I. Worksheets

The spreadsheet contains four worksheets: “Model,” “Saved Output,” “Output,” and “ESP.”

	A. Model			

	Contains the equations that make up the DICE model. This worksheet contains four kinds of rows: “Parameters and Exogenous Variables,” “Endogenous Variables,” “Control Variables,” and “Key Shadow Prices.” Parameter and Exogenous Variable rows contain either values (as opposed to formulas) or formulas based entirely on other Parameter and Exogenous Variable rows. Endogenous Variable rows contain formulas based on both the exogenous variables and the control variables. The Control Variable rows are determined by the user. A “policy” is a choice of values for these rows. The Key Shadow Price rows are formulas based on the Endogenous Variables. The Key Shadow Price rows are included in the Model worksheet because they indicate whether the Control Variables are optimal. (See section III.C.1 for more on this.)
	Important: the user should not enter numbers directly into the Carbon tax row (Model, row 99). This will erase a formula. Instead, when choosing values for the carbon tax, the user should enter them into the Unconstrained carbon tax row (Model, row 110). This is explained fully in sections II.A.3 and II.A.4.b.

	B. Saved Output

	Contains selected output from the base case and other cases. (See section III.B for discussion of cases.) This worksheet consists entirely of values (No formulas). Thus, it is not changed when a new policy or other change alters the endogenous variables. 
	The Saved Output worksheet is included as an example of how to save output from a model run, records useful output from the base case and other cases, and allows measures of the welfare impacts of policies to be constructed on the Output worksheet.

	C. Output

	This worksheet displays model output. Consists of formulas linked to the Model worksheet.

	D. ESP
	
	This worksheet calculates the environmental shadow price of carbon, one of the Key Shadow Prices on the model worksheet.

II.  Model structure

	In the spreadsheet, we follow the convention that endogenous variables are in bold font while exogenous variables and parameters are in normal font. When we refer to a row on a worksheet, we will generally refer to it as Variable name (Worsksheet name, row #)

	In the formulas below, “t” represents time. In 1995 t=1, in 2005 t=2, etc. 

	Factors of 10, 100, and 1000
	
	Since each time period spans a decade in the model, and since flows and some rates of change are represented on the spreadsheet on a per year basis, factors of 10 are needed when expressing stocks as functions of flows or expressing parameters as functions of annual rates of change. For instance, the gross change in the capital stock from period to period is 10 times annual investment. 

	We display percentages rather than fractions on the spreadsheet. In the formulas creating these percentages, fractions are multiplied by 100; similarly, in formulas linked to the percentages on the spreadsheet which call for fractions rather than percentages, we divide the percentages by 100.

	The units in which variables on the spreadsheet are commonly measured are occasionally inconsistent. We usually refer to carbon intensity in terms of tonnes of carbon per $1000 of GDP but refer to the carbon tax in terms of $/tonne, not $1000 per tonne. Factors of 10 to 1000 occur occasionally in the spreadsheet formulas to allow for the expression of all the variables in their most-commonly used units.

	A. Model Worksheet

		1. Parameters and Exogenous Variables

			a. Output and Capital Accumulation

Row 5 			q1		Damage coefficient on temperature
	
	Parameter in Climate damage (Model, row 74). Also enters Marginal effect of temperature on output (ESP, row 4)

Row 6			q2		Damage coefficient on temperature squared

	Parameter in Climate damage (Model, row 74). Also enters Marginal effect of temperature on output (ESP, row 4).

Row 7			b1 (t)		Abatement cost function coefficient
	
	Parameter in Abatement cost (Model, row 72). Also enters Control rate (Model, row 82) and Carbon tax (Model, row 99). Also enters formula for the Unconstrained carbon tax (Model, row 110) when the macro LimCT is run (in solving the emissions limits case. See section III.B below).

Row 8 			b1*		Initial cost function coefficient. 
		
	Determines first-period value of Abatement cost function coefficient. (Model, row 7)

Row 9			gb*		Initial rate of growth in abatement cost coefficient. 

	Parameter in growth rate of Abatement cost coefficient. (Model, row 11)

Row 10		db		Rate of decline in growth rate of abatement cost coefficient

	Parameter in growth rate of Abatement cost coefficient. (Model, row 11)

Row 11		gb(t)		Growth rate of abatement cost coefficient

Parameter that determines Abatement cost function coefficient. (Model, row 7). 

Row 12		b2		Exponent of abatement cost function

	Parameter in Abatement cost (Model, row 72). Also enters Control rate (Model, row 82) and Carbon tax (Model, row 99). Also enters formula for the Unconstrained carbon tax (Model, row 110) when the macro LimCT is run (in solving the emissions limits case. See section on Cases below)

Row 13		g		Capital share

	Parameter in Output gross of climate damage and abatement costs. (Model, row 71) Also enters Interest rate (Model, row 103) and Output, base case temperature (Output, row 9)

Row 14		d		Rate of depreciation

	Parameter in Capital stock (Model, row 79). Also enters Interest rate (Model, row 103) and Output, base case temperature (Output, row 10).

Row 15		K*		Initial capital stock

	Parameter in Capital stock (Model, row 79). Also enters Capital, base case temperature (Output, row 10).		

			b. Emissions

Row 17		dL		Rate of decline in land-use change emissions

	Parameter that determines Carbon emissions from land-use change (Model, row 18)

Row 18		LU(t)		Carbon emissions from land-use change

	Parameter in Total emissions (Model, row 81). Also enters formula for the Unconstrained carbon tax (Model, row 110) when the macro LimCT is run (in solving the emissions limits case. See section III.B below)

Row 19		LU*		Initial carbon emissions from land-use change

	Parameter in Emissions from land-use change (Model, row 18)

Row 20		s(t)		Industrial CO2 emissions to output ratio
	
	Parameter in Industrial emissions (Model, row 80). Also enters Control rate (Model, row 82) and Carbon tax (Model, row 99). Also enters formula for the Unconstrained carbon tax (Model, row 110) when the macro LimCT is run (in solving the emissions limits case. See section III.B below). 

	This parameter represents the CO2-output ratio in the absence of environmental controls – in a policy where the carbon tax is zero. The actual CO2-output ratio in a given case will depend on the Control rate (Model, row 82), which is a function of the Carbon tax (Model, row 99).

Row 21		s*		Initial industrial CO2 emissions to output ratio
	
	Determines first-period value of Industrial CO2 emissions to output ratio (Model, row 20)

Row 22		gs*		Initial growth rate of industrial CO2 emissions to output ratio. 

	Parameter in Growth rate of industrial CO2 emissions to output ratio (Model, row 25)

Row 23		ds1		Rate of decline in growth rate of sigma

	Parameter in Growth rate of industrial CO2 emissions to output ratio (Model, row 25)

Row 24		ds2		Acceleration parameter of growth rate of sigma

	Parameter in Growth rate of industrial CO2 emissions to output ratio (Model, row 25)

Row 25		gs(t)		Growth rate of industrial CO2 emissions to output ratio

Parameter that determines Industrial CO2 emissions to output ratio (Model, row 20). 

Row 26		EL(t)		World emissions limit

	Limit for total CO2 emissions in the emissions-limit case. (See description of cases below.) The model user can try out different emissions limits in the model by entering different numbers in this row. This parameter enters the Unconstrained carbon tax (Model, row 111) when the macro LimCT is run. EL has no role in the model outside of the emissions-limit case.

Row 27		CPOT		Convergence parameter for optimal carbon tax

	Parameter determines the step size in the macro OptCT that solves for the optimal carbon tax.. CPOT must be set to a number bigger than 0 and no larger than 1. (See section III.C.2.b for advice on choosing CPOT.) CPOT enters into the Iteration step. (Model, row 110)

			c. Population

Row 29		L(t)		Population

	Enters into Output gross of climate damage and abatement costs (Model, row 71), Per capita consumption (Model, row 93), Period-specific utility function (Model, row 94), GDP per capita (Output, row 7) and Output, base case temperature (Output, row 9).

Row 30		L*		Initial population
	
	Determines first-period value of Population (Model, row 29)

Row 31		gpop*		Initial population growth rate 

	Parameter in Cumulative population growth rate (Model, row 33)

Row 32		dpop		Rate of decline in population growth rate

	Parameter in Cumulative population growth rate (Model, row 33)

Row 33		CGpop(t)	Cumulative population growth rate

Parameter that determines Population (Model, row 29). 

			d. Productivity

Row 35		TFP(t)		Total factor productivity

	Enters into Output gross of climate damage and abatement costs (Model, row 71) and Output, base case temperature (Output, row 9)
Row 36		TFP*		Initial level of total factor productivity
	
	Determines first-period value of Total factor productivity (Model, row 35)

Row 37		gtfp*		Initial productivity growth rate

	Parameter in Productivity growth rate (Model, row 39)

Row 38		dtfp		Rate of decline in productivity growth rate

	Parameter in Productivity growth rate (Model, row 39)

Row 39		gtfp(t)		Productivity growth rate

Parameter that determines Total factor productivity (Model, row 35). 	

			e. Concentrations

Row 41		M*		Initial atmospheric concentration of CO2
Row 42		MU*		Initial concentration of CO2 in biosphere/shallow oceans
Row 43		ML*		Initial concentration of CO2 in deep oceans

	Parameters in carbon cycle equations (Model, rows 84-86)

Rows 44-51		f11, f12,	Carbon cycle transition coefficients
			f21, f22, f23,
			f32, f33

	Parameters in carbon cycle equations (Model, rows 84-86) fij specifies the percentage of
carbon in box j at the start of a decade that moves into box i over the decade.

Row 52		CL		Concentrations limit

	Limit for atmospheric carbon concentrations in the concentrations-limit case. (See description of cases in section III.B) The model user can try out different concentrations limits in the model by entering different numbers in this cell. This parameter enters Marginal effect of environment on output (ESP, row 4) when the macro Climdfunction is run. Outside of the concentration limits case, CL plays no role in the model. The default value is 1192.8 GtC, double the assumed preindustrial atmospheric concentration of carbon dioxide.

			f. Temperature

Row 54		O(t)		Exogenous forcing
	
	Forcing from sources other then CO2 emissions. Enters Total increase in radiative forcing since preindustrial (Model, row 89). 

Row 55		T*		Initial atmospheric temperature

	Enters Atmospheric temperature (Model, row 88)

Row 56		TLO*		Initial temperature of the deep oceans

	Enters Lower ocean temperature (Model, row 90)

Row 57		s1    		Speed of adjustment parameter for atmospheric carbon

	Enters Atmospheric temperature (Model, row 88)  

Row 58		CS		Climate sensitivity

	Parameter in Atmospheric temperature (Model, row 88). Specifies the long-run increase in temperature over preindustrial levels due to a doubling of atmospheric carbon concentrations from preindustrial levels.

Row 59		s2		Coefficient of heat loss from atmosphere to oceans

	Parameter in Atmospheric temperature (Model, row 88)

Row 60		s3		Coefficient of heat gain by deep oceans

	Parameter in Lower ocean temperature (Model, row 90)

Row 61		TL		Temperature limit

	Limit for atmospheric temperature in the temperature-limit case. (See description of cases below.) The model user can try out different temperature limits in the model by entering different numbers in this cell. This parameter enters Marginal effect of environment on output (ESP, row 4) when the macro Tlimdfunction is run. Outside of the temperature-limits case, this parameter plays no role in the model. The default value is 2.5 degrees Celsius.

			g. Welfare

Row 63		 r(t)		Social rate of time preference
	
Parameter in Social time preference factor (Model, row 66)

Row 64		 r*		Initial social rate of time preference

	Parameter in Social rate of time preference (Model, row 63)
Row 65		 gr		Rate of decline of social rate of time preference

	Parameter in Social rate of time preference (Model, row 63)

Row 66		 R(t)		Social time preference factor

	Parameter in Period-specific utility term (Model, row 94) and Discount factor (Model, row 96)

Row 67		 USM		Multiplicative scaling factor in utility function

	Parameter in Welfare (Model, row 95). Calibrated so that small changes in Welfare from the base case level are measured in units of first period consumption – ie, dW/dC(0)=1 in the solution of the base case.

Row 68		 USAD		Additive scaling factor in utility function

	Parameter in Welfare (Model, row 95). Calibrated so that in the base case Welfare equals Present value of consumption (Model, row 97).
		
		2. Endogenous Variables
	
			a. Output

Row 71		 Y(t)		Output gross of climate damage and abatement costs

	Enters into Output gross of climate damage (Model, row 73), Industrial carbon emissions (Model, row 80), and Industrial carbon intensity (Output, row 27)

Row 72		 ACP(t)	Abatement cost (as a percentage of Y)	

	Percentage of output lost due to costs of abating CO2 emissions. Enters into Output gross of climate change (Model, row 73).

Row 73		 YGR(t)		Output gross of climate damage

	Enters into Output net of climate damage and abatement costs (Model, row 75) and Marginal effect of environment on output (ESP, row 4).

Row 74		 D(t)		Climate damage

	Percentage of output lost due to damage from temperature increase. Enters into Output net of climate damage and abatement costs (Model, row 75), Control rate (Model, row 82), Carbon tax (Model, row 99), Climate damage (Output, row 12), and Marginal effect of environment on output (ESP, row 4).
Row 75  		Q(t)		Output net of climate damage and abatement costs

	Output available for consumption and investment. Enters into Investment (Model, row 77), Consumption (Model, row 92), Interest rate (Model, row 103), Output (Output, row 4), and GDP, difference from reference (Output, row 5)

			b. Capital accumulation

Row 77		 I(t)		Investment

	Gross capital accumulation. Enters into Capital (Model, row 78) and Consumption (Model, row 92)

Row 78		 K(t)		Capital

	Capital stock. Enters into Output gross of abatement costs and climate damage (Model, row 71) and interest rate (Model, row 103)

		c. Emissions

Row 80		 E(t)		Industrial CO2 emissions

	Enters into Total CO2 emissions (Model, row 81), Industrial CO2 emissions (Output, row 26), and Industrial carbon intensity (Output, row 27).

Row 81		 ET(t)		Total CO2 emissions

	Enters into Atmospheric CO2 concentration (Model, row 82) and Total CO2 emissions (Output, row 25).

Row 82		 m(t)		Control rate

	Percent decrease in emissions from their zero-carbon tax level. Enters into Industrial CO2 emissions (Model, row 80), Abatement cost (Model, row 72), and Control rate (Output, row 30). The Control rate is a function of the Carbon tax (Model, row 99).

	From II.A.5.14-17 and II.A.5.20,

II.A.2.1	Q(t)=[1/(1+D(t)/100)](1-b1(m(t)/100)b2)Y(t)

II.A.5.20	E(t) = (1-m(t)/100)s(t)Y(t)

	II.A.5.20 can be rewritten

II.A.2.2	 m(t)=100[1-E(t)/s(t)Y(t)]
	Plugging II.A.2.2 into II.A.2.1 and taking dQ(t)/dE(t), we get a formula for the marginal product of emissions:

II.A.2.3	dQ(t)/dE(t) ={ [1/(1+D(t)/100)]b1(t)b2(m(t)/100)(b2-1)}/s(t)

	Economic agents produce Industrial carbon dioxide emissions (Model, row 80)  until the marginal product equals the marginal cost. In our model, emissions have zero economic cost; thus, the marginal cost of an emission is the Carbon tax (Model, row 99). Setting the marginal product of emissions equal to the Carbon tax, we can solve for the Control rate induced by a given Carbon tax.

			d. Carbon cycle

Row 84	 	M(t)		Atmospheric carbon concentration

	Enters into Biosphere/upper ocean carbon dioxide concentration (Model, row 85), Total increase in radiative forcing since preindustrial (Model, row 89) and dF(t)/dE(i) (ESP, rows 78-112). When the macro Climdfunction has been run, this variable enters into Marginal effect of the environment on output (ESP, row 4).
		
Row 85		 MU(t)		Biosphere/upper ocean carbon dioxide concentration

	Enters into Atmospheric CO2 concentration (Model, row 84) and Deep ocean CO2 concentration (Model, 86)

Row 86		 ML(t)		Deep ocean CO2 concentration

Enters into Biosphere/upper ocean CO2 concentration (Model, 85)

			e. Temperature

Row 88		 T(t)		Atmospheric temperature

	This variable serves as a comprehensive measure of climate change in the DICE model. All harmful environmental effects of greenhouse gases occur through the effect of this variable on GDP. Enters Climate damage (Model, row 72), Lower ocean temperature (Model, row 90), Atmospheric temperature (Output, row 13), Global mean temperature, difference from base (Output, row 15), and Marginal effect of environment on output (ESP, row 4).
		
Row 89		 F(t)		Increase in radiative forcing since preindustrial times

	Enters Atmospheric temperature (Model, row 88).

	The 596.4 in II.A.5.28 is our estimate of preindustrial concentrations of carbon dioxide. A doubling of carbon dioxide relative to its preindustrial level will raise radiative forcing by 4.1 W/m2 over its preindustrial level, according to this equation.	

Row 90		 TLO(t)		Lower ocean temperature

	Enters Atmospheric temperature (Model, row 90)

			f. Welfare

Row 92		 C(t)		Consumption

	Enters into Consumption per capita (Model, row 93)

Row 93		 CPC(t)		Consumption per capita

	Enters into Period-specific utility function (Model, row 95), Discount factor (Model, row 96), and Consumption (Output, row 17).

Row 94		 U(t)		Period-specific utility term

	Individual period terms in the time separable social welfare function. Enters Welfare (Model, row 95).

Row 95		 W		Welfare

	This cell displays the value of the social welfare function, the measure of the overall welfare of society. 

Row 96		 DF(t)		Discount factor

	Ratio of marginal social welfare of consumption in time t to the marginal social welfare of consumption in the first period, or the value of a unit of future consumption in terms of units of consumption today. Enters into Present value of consumption (Model, row 97) and Discount rate (Model, row 104).

(II.A.2.4)	DF(t) = R(t)L(t)C(0)/[C(t)L(0)]

	This is derived by taking the derivative of II.A.5.32 with respect to C(t).

Row 97		 PVC		Present value of consumption

	An alternative welfare measure to Welfare, this is the sum across periods of consumption, discounted by the discount factor.

(II.A.2.5)	PVC = S 10DF(t)C(t)
			 t
	
	Note: If one is comparing the present value of consumption across policies, one should use the same discount factors to calculate both discounted sums.

		3. Control Variables

Row 99		 t		Carbon tax

	The tax that must be paid for each metric ton of industrial emissions. This variable is the policy-maker’s means of controlling emissions. By increasing the tax, the policy-maker makes emissions more costly, thus decreasing their use. This variable enters the formula for the Control rate (Model, row 82), Iteration step (Model, row 109), and Carbon tax (Output, row 32). 

	The control rate formula allows the Control rate (Model, row 82) to be over 100% for high enough t. This would imply negative Industrial CO2 emissions. To prevent the Carbon tax from entering this range, we have made the carbon tax row a formula that caps the Carbon tax at the value that sets the Control rate to 100. Model users should not enter values into the carbon tax row directly; this will erase the formula. Instead, values for the Carbon tax should be entered into the Unconstrained carbon tax (Model, row 110). The value that appears in the carbon tax row will then be the minimum of the user-entered tax rate and the zero-industrial-emissions tax rate:
		
(II.A.3.1)	t(t) = min {tUC(t), 1000b1(t)b2/[(1+D(t)/100)s(t)]}

	The zero-industrial-emissions carbon tax, or the second term on the right hand side of (II.A.3.1) is derived by setting m(t) = 100 in II.A.5.22 and solving for t(t).

Row 100		 s(t)		Savings rate

	The Savings rate determines which fraction of output is devoted to consumption and which to investment. It enters the formula for Investment (Model, row 77) and Capital, base case temperature (Output, row 10). The user enters his choice for the savings rates directly into the Savings rate row.

		4. Key shadow prices

			a. Capital

Row 103		 i(t)		Interest rate

	Rate of return on investment, expressed as an annual rate. Enters into the Difference between the interest rate and discount rate (Model, row 105).

	 An additional unit of investment in the current period has two benefits in the next period. It increases output and reduces the investment necessary to attain a given target for the capital stock. Thus, the interest rate that applies to investment in the current period can be derived by adding the marginal product of capital in the next period to the fraction of investment that remains after one decade’s depreciation, and then converting the sum into an annual rate:

(II.A.4.1)	[1+i(t)/100]10 = 10gQ(t+1)/K(t+1) + (1-d/100)10
	      
	There is no factor of 10 on the second term in the first equation above, because an increase of 10 in end-of-period capital stock reduces the per-year investment necessary to attain a given target by only 1.

	Rearranging (II.A.4.1) gives us the spreadsheet formula for the interest rate:

(II.A.4.2)	 i(t)   = 100{[10gQ(t+1)/K(t+1) + (1-d/100)10]1/10 -1}

Row 104		 DR(t)		Discount rate

Ratio of marginal social welfare of consumption in current period to that in next period,
expressed as an annual rate.  Enters into the Difference between the interest rate and discount rate (Model, row 105).

(II.A.4.3)	[1+DR(t)/100]10 = [dW/dC(t)]/[dW/dC(t+1)] = DF(t)/DF(t+1)
(II.A.4.4)	DR(t) = 100([DF(t)/DF(t+1)]1/10 - 1)

Row 105		 DiffC(t)		Difference between interest rate and discount rate
	
	Serves as a criterion to judge whether the Savings rate is optimal. Optimal savings rates will set DiffC to zero.

(II.A.4.5)	DiffC(t) = 100[i(t) - DR(t)]/DR(t)

			b. Emissions

Row 107		 ESP(t)		Environmental shadow price of carbon

Societal willingness to pay to avoid the marginal environmental consequences of carbon
dioxide emissions. The calculation of ESP is done on the ESP worsksheet. Enters into Difference between carbon tax and ESP (Model, row 108), Iteration step (Model, row 109), and Environmental shadow price of carbon (Output, row 33)

Row 108		 DiffE(t)		Difference between carbon tax and ESP

Serves as a criterion to judge whether the Carbon tax is optimal. The optimal Carbon tax sets
DiffE to zero – the marginal product of emissions should equal their marginal environmental cost.
(II.A.4.6)	DiffE(t) = 100[ESP(t) - t(t)]/ESP(t)

Row 109		 IS(t)		Iteration step

A point midway between the Carbon tax and ESP. Used in the macro OptCT that finds the
optimal Carbon tax. IS(t) is the next value that the algorithm will try in the Unconstrained carbon tax row (Model, row 110).

(II.A.4.7)	IS(t) = t(t) + CPOT(ESP(t) - t(t))

Row 110		 tuc(t)		Unconstrained carbon tax

In this row the user specifies his choice for the Carbon tax. The user can place as high a 
number as he would like in this row. The formula in the carbon tax row (Model, row 99) prevents the Carbon tax that enters the control rate formula (Model, row 82) from exceeding 100%.

		5. List of equations

	This list contains all formulas on the Model worksheet up to row 95. These comprise the equations of the DICE-99 model.

(II.A.5.1) 	b1(t)=b1(t-1)/[1+gb(t)/100]
Row 7
		b1(1)=b1*

(II.A.5.2)	gb(t)=gb*exp(-10(db/100)t)
Row 11

(II.A.5.3)	LU(t)=LU*(1-[dL/100])t		
Row 18

(II.A.5.4)	s(t)=s(t-1)/[1+gs(t)/100]
Row 20
		s(1)=s*

(II.A.5.5)	gs(t)=gs*exp(-(ds/100)t-ds2t)
Row 25

(II.A.5.6)	L(t)=L*exp[CGpop(t)]
Row 29

(II.A.5.7)	
Row 33	

(II.A.5.8) 	TFP(t)=TFP(t-1)/[1+gtfp(t)/100]
Row 35
		TFP(1)=TFP*

(II.A.5.9)	gtfp(t)=gtfp*exp(-(dtfp/100)t)
Row 37
			
(II.A.5.9)
Row 39	

(II.A.5.10)	O(t) =  -0.1965 + 0.13465t		t < 12
Row 54	       =  1.15				t > 11
											
(II.A.5.11) 	r(t) = r*exp(-10(gr/100)t)
Row 63
			
(II.A.5.12)	R(t) = R(t-1)/[1+ D(t-1)]10
Row 66	           
		R(1) = 1

(II.A.5.13)	Y(t)=TFP(t)(K(t)g)(L(t)1-g)
Row 71

(II.A.5.14)	ACP(t) = 100b1(m(t)/100)b2
Row 72

(II.A.5.15)	YGR(t) = [1-(ACP(t)/100)]Y(t)
Row 73

(II.A.5.16)	D(t) =100*( q1T(t)+q2T(t)2)
Row 74

(II.A.5.17)	Q(t)=YGR(t)/(1+D(t)/100)
Row 75

(II.A.5.18)	I(t) = (s(t)/100)Q(t)
Row 77
(II.A.5.19)	K(t) = 10I(t)+K(t-1)(1-d/100)10
Row 78	K(1) = K*

(II.A.5.20)	E(t) = (1-m(t)/100)s(t)Y(t)
Row 80

(II.A.5.21)	ET(t) = E(t) + LU(t)
Row 81

(II.A.5.22)	m(t)=100[(t(t)/1000)s(t)(1+D(t)/100)/(b1(t)b2)]1/(b2-1)
Row 82

(II.A.5.23)	M(t) = 10ET(t-1) + (f11/100)M(t-1) + (f12/100)MU(t-1)
Row 84	M(1)= M*

(II.A.5.24)	MU(t) = (f21/100)M(t-1) + (f22/100)MU(t-1) + (f23/100)ML(t-1)
Row 85	MU(1)= MU*

(II.A.5.26)	ML(t) = (f32/100)MU(t-1) + (f33/100)ML(t-1) 
Row 86	ML(1)= ML*

(II.A.5.27)	T(t) = T(t-1) + s1{F(t-1) - [4.1/CS]T(t-1) - s2[T(t-1) - TLO(t-1)]}
Row 88	T(1) = T*

(II.A.5.28)	F(t) = 4.1[ln(M(t)/596.4)/ln(2)]
Row 89

(II.A.5.29)	TLO(t) = TLO(t-1) + s3[T(t-1) - TLO(t-1)]
Row 90	TLO(1) = TLO*

(II.A.5.30)	C(t) = Q(t) - I(t)
Row 92

(II.A.5.31)	CPC(t) = 1000C(t)/L(t)
Row 93

(II.A.5.32)	U(t) = R(t)L(t)ln(CPC(t)/1000)
Row 94

(II.A.5.33)	W = USAD + S U(t)/USM
Row 95		           t

	B. Saved Output

This worksheet was created by solving some of the cases below (III.B) and copying the values from some of the rows in the Output worksheet. There are no formulas on this page; the rows consist entirely of values. The variable definitions are the same as the corresponding variables on the Output worksheet.

Some of the rows on this page are used to construct variables on the Output worksheet that compare the user’s choice of policy to the base case. These rows are 

Row 5			QB(t)		Base case output

Enters GDP, difference from reference (Output, row 5) and GDP, difference from reference, percent (Output, row 6)

Row 9			DB(t)	 	Base case climate damage 

Enters Output, base case temperature (Output, row 9), Global mean temperature, difference from base (Output, row 15)

Row 10		TB(t)		Base case atmospheric temperature

	Enters Global mean temperature, difference from base (Output, row 15)

Row 14		DFB(t)		Base case discount factor

	Enters Base case discount factor (Output, row 18)

Row 15		PVCB		 Base case present value of consumption 

Enters Total abatement cost of policy (Output, row 21) and Total economic impact of policy (Output, row 23)

Row 17		ETB(t)		Base case total carbon dioxide emissions 

	Enters Cumulative carbon dioxide emissions, difference from reference (Output, row 29)

	C. Output

		1. Output

Row 4			Q(t)		Output

This equals Output net of climate damage and abatement costs on the Model worksheet.
(Model, row 75). Enters GDP per capita (Output, row 7)	

Row 5			QDR(t)	GDP, difference from reference

Difference between GDP under user’s choice of policy and GDP in base case. Enters GDP,
difference from reference, percent (Output, row 6)

(II.C.1.1)	QDR(t) = Q(t) - QB(t)

Row 6			QDRP(t)		GDP, difference from reference, percent

	Difference between GDP and base case GDP, expressed as percent of base case GDP

(II.C.1.2)	QDRP(t) = 100[QDR(t)]/QB(t)

Row 7			QPC(t)		GDP per capita

	Enters GDP per capita, ratio to 1995 (Output, row 8)

(II.C.1.3)	QPC(t) = 1000Q(t)/L(t)

Row 8			QPCR95(t)	GDP per capita, ratio to 1995

	Ratio of GDP per capita to its 1995 level

(II.C.1.4)	QPCR95(t) = QPC(t)/QPC(1995)

Row 9			QBT(t)		Output, base case temperature

A counterfactual – what GDP would have been under the current policy but with the same
time path of temperature as in the base case. Enters Consumption, base case temperature (Output, row 20).

(II.C.1.5)	QBT(t) = [1/(1+DB(t)/100)](1-ACP(t)/100)A(t)KBT(t)gL(t)1-g

Row 10		KBT(t)		Capital, base case temperature

What Capital stock would have been under current policy but with the same time path of
temperature as the base case. Enters Output, base case temperature (Output, row 9)

(II.C.1.6)	KBT(t) = KBT(t-1)(1-d/100)10 + 10(s(t-1)/100)YBT(t-1)

		2. Environment

Row 12		D(t)		Climate damage

	Equals Climate damage from Model worksheet. (Model, row 74)	

Row 13		T(t)		Atmospheric temperature

	Equals Atmospheric temperature in Model worksheet. (Model, row 88)

Row 14		M(t)		Atmospheric carbon dioxide concentration

	Equals Atmospheric carbon dioxide concentration on Model worksheet (Model, row 84)

Row 15		TDR(t)		Global mean temperature, difference from reference

(II.C.2.1)	TDR(t) = T(t) - TB(t)

		3. Welfare

Row 17		C(t)		Consumption

Equals Consumption in Model worksheet (Model, row 92) Enters into Total economic
impact of policy (Output, row 23)

Row 18		DFB(t)		Base case discount factor

Equals Base case discount factor (Saved Output, row 13). Enters into Total
abatement cost of policy (Output, row 21) and Present value of consumption, base case discount factors (Output, row 19). This row consists of values, not formulas. It was created by solving the base case and pasting the values of the Discount factor (Model, row 96)

	In making welfare comparisons between 2 different policies, the same relative prices should be used to discount the future consumption streams that result from both policies. Thus, in constructing the comparison measures Total abatement cost of policy (Output, Row 21) and Total economic impact of policy (Output, row 23), we use the base case relative prices to discount both base case consumption and consumption under current policy.

Row 19		PVCBDF	Present value of consumption, base case discount factors

This is identical to Present value of consumption (Model row 97) except that the discount
factors used are the Base case discount factors (Output, row 18). Enters Total economic impact of policy (Output, row 23)

(II.C.3.1)	PVCBDF =  S 10DFB(t)C(t)
		                     t

Row 20		CBT(t)		Consumption, base case temperature

Consumption, assuming current policy and the time path of temperature in the base case.
Calculating this variable allows us to separate the costs of carbon abatement from the environmental benefits of a policy. Enters Total abatement cost of policy (Output, row 21)

(II.C.3.2)	CBT(t) = (1-s(t)/100)QBT(t)

Row 21		TAC		Total abatement cost of policy

The total impact of a policy can be conceptually broken down into the costs of abating
carbon emissions and the environmental effects of the abatement. TAC  provides a measure of the first component. It is the difference between Base case present value of consumption (Saved Output, row  15) and the present value of consumption assuming the current policy has no effect on the time path of temperature. Enters Environmental benefit of policy (Output, row 22)

(II.C.3.3)	TAC = 1000[PVCB - S 10DFB(t)CBT(t)]
				           t

Row 22		EB		Environmental benefit of policy

Defined as a residual: the Total economic impact of a policy equals the Environmental benefit
of the policy minus the Total abatement cost:

(II.C.3.4)	EB = TEI + TAC

Row 23		TEI		Total economic impact of policy

	Difference from the base case in the present value of consumption. This is one possible measure of the overall effect of a policy on welfare. An alternative way to measure the welfare effects would be to calculate the compensating variation or equivalent variation in terms of first period consumption, using the value of the social welfare function (Model, row 95). Note that since all of the negative effects of climate change are summarized by their effects on consumption in the model, Total economic impact of policy includes the environmental effect.

(II.C.3.5)	TEI = PVBDF - PVCB

		4. Emissions

Row 25		ET(t)		Total carbon dioxide emissions

	Equals Total carbon dioxide emissions on the Model worksheet (Model, row 81)

Row 26		E(t)		Industrial carbon dioxide emissions

	Equals Industrial carbon dioxide emissions on the Model worksheet (Model, row 80)

Row 27		ICI(t)		Industrial carbon intensity	

Ratio of industrial emissions to GDP. Enters Industrial carbon intensity growth rate
(Output, row 28)

(II.C.4.1)	ICI(t) = E(t)/Y(t)

Row 28		gICI (t) 		Industrial carbon intensity growth rate

(II.C.4.2)	gICI(t) = 100([ICI(t+1)/ICI(t)]1/10 - 1 )

Row 29		CumEDB(t)	Cumulative carbon dioxide emissions, difference from the
					reference

(II.C.4.3)	CumEDB(t) = CumEDB(t-1) + 10 [ET(t) - ETB(t)]
		CumEDB(1) = 0

Row 30		m(t)		Control rate

	Equals Control rate on Model worksheet (Model, row 82)

		5. Prices

Row 32		t(t)		Carbon tax

	Equals Carbon tax on Model worksheet (Model, row 99)

Row 33		ESP(t)		Environmental shadow price of carbon

	Equals Environmental shadow price of carbon from Model worksheet (Model, row 33)

Row 34		i(t)		Interest rate

	Equals Interest rate on Model worksheet (Model, row 103)

	D. ESP

	The calculation of the environmental shadow price is a technical matter whose details need not concern most model users. The default formula for ESP is derived from the equations on the Model worksheet, so is consistent with the rest of the model. In the temperature and concentration limits cases, we use different formulas to calculate the ESP.

		1. ESP calculation

Row 3			ESP(t)		Environmental shadow price of carbon

	Societal willingness to pay to avoid the marginal environmental consequences of carbon dioxide emissions. Enters Environmental shadow price of carbon (Model, row 107). ESP consists of the discounted sum over all future periods of the Marginal effect of the environment on output (ESP, row 4) times the marginal effect of a current-period emission on the environment.

				NOP
(II.D.1.1)	ESP(t) = 1000 S [DF(i)/DF(t)]MCD(i)[dT(i)/dE(t)]
				i=t+1

where NOP is the number of periods in the model. When the macro climdfunction is run, ESP
takes the form

				NOP	
(II.D.1.2)	ESP(t) = 1000 S [DF(i)/DF(t)]MCD(i)[dM(i)/dE(t)]
				i=t+1
	
Row 4			MCD(t)	Marginal effect of environment on output

Enters Environmental shadow price of carbon (ESP, row 3) This can be derived from
II.A.5.16 and II.A.5.17
			
(II.D.1.3)	MCD(t) = -YGR(t)[q1 + 2q2T(t)]/(1+D(t)/100)2

	When the macro Tlimdfunction is run, the equation becomes

(II.D.1.4)	MCD(t) = - YGR(t)[CDCexp(T(t)EDC/TL)][EDC/TL]/[1+CDCexp(T(t)EDC/TL)]2

	This is derived from II.A.5.17 and III.B.1.2. When the macro Climdfunction is run, the equation becomes

(II.D.1.5)	MCD(t) = - YGR(t)[CDCexp(M(t)EDC/CL)][EDC/CL]/[1+CDCexp(M(t)EDC/CL)]2

	This is derived from II.A.5.17 and III.B.1.3.

Rows 6-40		dT(i)/dE(t)	Marginal effect on temperature of emissions at time t

Enters Environmental shadow price of carbon (ESP, row 3) and Marginal effect on
temperature of deep oceans of emissions at time t (ESP, rows 42-76). From II.A.5.27:

(II.D.1.6)	dT(i)/dE(t) = (1 - 4.1s1/CS - s1s2)[dT(i-1)/dE(t) ]+ s1[dF(i-1)/dE(t)] 
				+ s1s2[dTLO(i-1)/dE(t)]

		dT(i)/dE(t) = 0, i=1

The marginal emission in period t has no effect on climatic variables in period t. In period t+1
it affects atmospheric concentrations and forcing, but not temperature, since forcing affects temperature with a lag. Only in period t+2 will it affect atmospheric temperature, through its effect on forcing in t+1. Thus,

(II.D.1.7)	dT(i)/dE(t) = 0, i < t+2

Rows 42-76		dTLO(t)/dE(i)		Marginal effect on temperature of deep oceans of emissions at time t

Enters Marginal effect on temperature of emissions at time t (ESP, rows 6 - 40). From
II.A.5.29,
	
(II.D.1.8)	dTLO(i)/dE(t) = s3[dT(i-1)/dE(t)] + (1-s3)[dTLO(i-1)/dE(t)]
		dTLO(i)/dE(t) = 0, i=1

	Since dT(i)/dE(t) becomes nonzero only in period t+2, 

(II.D.1.9)	dTLO(i)/dE(t) = 0, i < t+3

Rows 78-112		dF(t)/dE(i)	Marginal effect on radiative forcing of emissions at time t

Enters Marginal effect on temperature on emissions at time t (ESP, row 4) From II.A.5.28

(II.D.1.10)	dF(i)/dE(t) = [dM(i)/dE(t)]4.1/[ln(2)M(t)]

	Since dM(i)/dE(t) becomes nonzero only when i=t+1,

(II.D.1.11)	dF(i)/dE(t) = 0, i < t+1

Rows 114-148		dM(t)/dE(i)	Marginal effect on atmospheric carbon dioxide concentration of emissions at time t

Enters Marginal effect on radiative forcing of emissions at time t (ESP, rows 78-112) and
Marginal effect on biosphere/upper oceans carbon concentrations of emissions at time t (ESP, rows 150-184). When the macro Climdfunction is run, also enters Environmental shadow price of carbon (ESP, row 3). From II.A.5.23,

(II.D.1.12)	dM(i)/dE(t) = 0, i < t+1
		dM(i)/dE(t) = 10, i=t+1,
		dM(i)/dE(t) = f11dM(i-1)/dE(t) + f12dMU(i-1)/dE(t), i>t+1

Rows 150-184		dMU(t)/dE(i)		Marginal effect on bioshpere/upper ocean carbon dioxide concentration of emissions at time t

Enters Marginal effect on atmospheric carbon dioxide concentration of emissions at time
t (ESP, rows 114-148) and Marginal effect on deep ocean carbon dioxide concentration of emissions at time t (ESP, rows 186-220). From II.A.5.24,

(II.D.1.13)	dMU(i)/dE(t) = 0, i < t+2
		dMU(i)/dE(t) = f21dM(i-1)/dE(t) + f22dMU(i-1)/dE(t) + f23dML(i-1)/dE(t), i>t+1

Rows 186-220		dML(t)/dE(i)		Marginal effect on deep ocean carbon dioxide concentration of emissions at time t

Enters Marginal effect on biosphere/upper ocean carbon dioxide concentration of emissions
at time t (ESP, rows 150-184) From II.A.5.26,

(II.D.1.14)	dML(i)/dE(t) = 0, i < t+3
		dML(i)/dE(t) =  f32dMU(i-1)/dE(t) + f33dML(i-1)/dE(t), i>t+2

		2. Steep damage curve parameters
	
	In the concentration limit case, we calculate MCD as if D(t) were

(II.D.2.1)	DSDC(t) = 100CDCexp(M(t)EDC/CL)

In the temperature limits case, replace M(t) with T(t) and CL with TL in II.D.2.1.  DSDC(t)
will be practically zero until M or T gets near CL TL and then will increase rapidly. The user can control DSDC and thus MCD in the concentration and temperature-limit cases via the parameters CDC and EDC. The user controls CDC and EDC via the parameters LRP, URP, PLRP, and PURP, which have more intuitive interpretations. Changing these parameters can change the steepness of the rapid increase in DSDC and the range over which it occurs. 	

Row 223		LRP		Lower reference point

Point at which DSDC becomes PLRP. Enters into Exponent on steep damage curve (ESP, row
227)  and Coefficient on steep damage curve (ESP, row 228)

Row 224		URP		Upper reference point

Point at which DSDC becomes PURP. Enters into Exponent on steep damage curve (ESP, row
227)  and Coefficient on steep damage curve (ESP, row 228)

Row 225		PLRP		Percentage of output lost at lower reference point

	Enters into Exponent on steep damage curve (ESP, row 227) and Coefficient on steep damage curve (ESP, row 228)

Row 226		PURP		Percentage of output lost at upper reference point

	Enters into Exponent on steep damage curve (ESP, row 227)  and Coefficient on steep damage curve (ESP, row 228)

	LRP, URP, PLRP, and PURP are best explained by example, using the concentrations case. For the equivalent conditions in the temperature-limit case, substitute T(t) for M(t) and TL for CL in II.D.2.2 and II.D.2.3:

(II.D.2.2)	When M =(1-LRP/100)CL DSDC = PLRP
(II.D.2.3)	When M =(1+URP/100)CL  DSDC = PURP

Row 227		EDC		Exponent on steep damage curve

	Enters Marginal effect of environment on output (ESP, row 4) when either Climdfunction or Tlimdfunction are run.

Row 228		CDC		Coefficient on steep damage curve

	Enters Marginal effect of environment on output (ESP, row 4) when either Climdfunction or Tlimdfunction are run.

We derive EDC and CDC by setting up the following system of equations, which we obtain
from (II.D.2.1), (II.D.2.2), and (II.D.2.3):

(II.D.2.4)	PLRP = 100CDCexp((1-LRP/100)EDC)
(II.D.2.5)	PURP = 100CDCexp((1+URP/100)EDC)

	Which gives us
	
(II.D.2.6)	EDC = [ln(PLRP/100) - ln(CDC)]/[1-LRP/100]
(II.D.2.7)	CDC = exp { [(1+URP/100)ln(PLRP/100) - (1-LRP/100)ln(PURP/100)]/
				[LRP/100+URP/100]}

III. Solving the Model

	A. User Control
	
	The user can try out different policies by varying the values in the control variable rows. The user can also alter the model by changing the equations or altering the exogenous variables and parameters. The latter type of change, however, should not be viewed as the implementation of a policy; it is only justifiable if the user thinks a different view of nature, of the economic and environmental constraints facing society, is in order. One possible exception is the altering of the damage coefficients (Model, rows 5 and 6) in the geoengineering case (section III.B).
	One approach to setting policy is to directly enter the desired values for the Carbon tax and the Savings rate into the control variable rows. Another approach is to specify conditions for a policy to meet and then to find the values of the control variables that meet these conditions. A set of such conditions is called a “case.” The values of the control variables that satisfy the conditions of a case are said to solve that case, and the values of the endogenous variables that result from the solution are the output of that case. Some of the most interesting cases are listed below. 

	B. Cases

		1. Base  

		In the base case the Carbon tax is set to zero and the Savings rate is optimized.
This represents the model’s projection of what will happen to output, emissions, and climate if no further government action is taken to reduce climate change. It can be thought of as the unregulated market outcome: what happens if the market is left to its own forces with no attempt to internalize the climate externality. The default values of the control variables and thus of the endogenous variables are their base-case values.

		2. Optimal
	
		Both the Savings rate and the Carbon tax are optimized. That is, the Carbon tax in each period is set at the level that strikes the optimal balance between the costs and benefits of carbon abatement.

		3. Emissions limits

		The Carbon tax is set in each period so that Total carbon dioxide emissions (Model, row 81) do not exceed the World emissions limit (Model, row 26) in that period. The Savings rate is again optimized.

		4. Geoengineering

		In the geoengineering case, the damage coefficients q1 and q2 (Model, rows 5 and 6) are set to zero and the Savings rate is optimized. The Carbon tax is set to zero. 
		The geoengineering case, in which the climate problem is removed with the wave of  a hand, allows us to put a dollar value on the damages from climate change. It can be thought of as the result of the application of a costless geoengineering technology to solve the climate change problem. Realistically-costed geoengineering solutions can be evaluated by subtracting their costs from Output net of abatement costs and climate damage (Model, row 75) in each period. 
											
		5. Temperature limits 

		Atmospheric temperature (Model, row 88) is constrained not to exceed the Temperature limit (Model, row 61). The time path of the Carbon tax is optimized subject to this constraint, and the Savings rate is optimized as well. 

		6. Concentrations limits 

		Atmospheric concentration of carbon dioxide (Model, row 84) is constrained not to exceed the Concentrations limit (Model, row 52). The time path of the Carbon tax is optimized subject to this constraint, and the Savings rate is optimized as well.

	C. Solving cases

		1. Mathematical conditions

	Cases are solved by translating their conditions into mathematical conditions and then finding  the values of the control variables that cause the mathematical conditions to be met. 
	Table 1 displays the mathematical conditions for solution for the cases in part B, along with the control variable which can be altered in order to satisfy each condition. Note that when the 

Table 1. Conditions for Solution in DICE-99

Case	Condition for solution	Mathematical condition	Control variable	

1. Base	Optimal savings behavior	DiffC = 0
(Model, row 105)	Savings rate	

	Carbon externality ignored	t = 0
(Model, row 99)	Carbon tax	

2. Optimal	Optimal savings behavior	DiffC = 0	(Model, row 105)	

Savings rate		Optimal carbon abatement	DiffE = 0
(Model, row 108)	

Carbon tax	3. Emissions limit	Optimal savings behavior	DiffC = 0
(Model, row 105)	

Savings rate		Total emissions equal world emissions limit	ET(t) = EL(t)
(Model, rows 81 and 26)	

Carbon tax	4. Geoengineering	Optimal savings behavior	DiffC = 0
(Model, row 105)	

Savings rate		Temperature damage eliminated	q1=0, q2=0
(Model, rows 5 and 6)	

	5. Temperature limit	Optimal savings behavior	DiffC = 0
(Model, row 105)	

Savings rate		Optimal carbon abatement subject to temperature limit	DiffE = 0, with damages a steep function of temperature	

Carbon tax	6. Concentration limit	Optimal savings behavior	DiffC = 0
(Model, row 105)	

Savings rate		Optimal carbon abatement subject to concentration limit	DiffE = 0, with damages a steep function of concentration	

Carbon tax		

“carbon tax” is specified as the control variable in Table 1, the user searches by altering the Unconstrained carbon tax (Model, row 110). 

		2. Notes on individual conditions

			a. Optimal savings rates

	The easiest way to find the optimal savings rates is to use the Goal Seek command. First use the Goal Seek command to set DiffC(1) equal to zero by varying s(1), then do so for period 2, etc.
In the last period, the Savings rate should be set so that Investment is equal to 2% of the Capital stock. This is done by using the Goal Seek command to set the Terminal condition for K (Model, row 77, column AK) equal to zero by varying s(NOP). (NOP = number of periods.)
	The sequence of commands described in the above paragraph can be carried out by executing the macro FOSR.
	Since the Discount rate (Model, row 104) for period t depends on the Savings rate in period t+1, the user may need to repeat FOSR one or more times in order to set DiffC=0 for all t.  

			b. Optimal carbon tax

	The Goal Seek command could also be used to find the Carbon tax that sets DiffE=0. An easier way to find the optimal carbon tax is to try values in the Unconstrained carbon tax row that are somewhere between the Carbon tax and the Environmental shadow price.  Repeating this will generally cause DiffE to become smaller and smaller. That is, simply copy the values of the Iteration step (Model, row 109), which is t + CPOT(ESP - t), into the Unconstrained carbon tax row (Model, row 110) and repeat until the Carbon tax is satisfactorily close to the Environmental shadow price. 
	The macro OptCT carries out the operation described in the above paragraph 100 times.
	Increasing CPOT (Model, row 27) will increase the iteration step size; the step taken in each iteration toward ESP will be larger. This will reduce the number of iterations needed to achieve convergence, assuming the algorithm remains stable. The drawback of increasing CPOT is that it increases the likelihood that the algorithm becomes unstable. In the optimal case, where ESP is calculated from the default damage function, the algorithm is generally stable even if CPOT is 1.
	The algorithm to find the optimal carbon tax is the same in the optimal, temperature-limit, and concentration-limit cases. What differs across these cases is the calculation of the Environmental shadow price. 
	In order to use our optimal carbon tax algorithm to find optimal carbon abatement subject to temperature or concentration limits, we transform the limits into damage functions. Optimizing carbon abatement subject to these limits is the same as optimizing subject to a damage function that is zero before the limit is reached and unacceptably high upon reaching the limit. Since our algorithm for finding the optimal carbon taxes requires a continuous damage function, we use damage functions that are very steep near the limit rather than completely vertical at the limit; the carbon taxes that we get out of our algorithm with such functions will be very close to the optimal ones, although not exactly the same.
	In the optimal case, we calculate the ESP assuming 

(III.B.1.1)	D(t) =100( q1T(t)+q2T(t)2)

In the temperature limits case, we calculate ESP assuming

(III.B.1.2)	D(t) = DSTD(t) = 100CDCexp(T(t)EDC/TL)

And in the concentration limits case, we calculate ESP assuming

(III.B.1.3)	D(t) = DSTD(t) = 100CDCexp(M(t)EDC/CL)

(D(t) is Climate damage (Model, row 74).)

	By choice of the parameters CDC and EDC, we can make III.B.1.2 and III.B.1.3 as close to a step function as we want at the temperature or concentration limit.
	Note that in the temperature- and concentration-limit cases, these alternative assumptions affect only the ESP worksheet, not D(t) on the Model worksheet. The actual damages do not change in these cases, only the incentives given to the market via the solution Carbon tax. 
	To switch from the default ESP to the temperature (concentration) limits-case ESP, use the macro Tlimdfunction (Climdfunction). To switch back, use Normaldfunction. 
	Because of these damage functions are so steep, the algorithm to find the optimal carbon tax will generally be unstable unless CPOT (Model, row 27) is small. For example, if Atmospheric temperature in a late period is near the limit, the ESP for an early period will be very high. If CPOT is one, the algorithm will try a high value of the Carbon tax in the early periods, which would cause emissions to be reduced in the early periods and late period temperature to be driven away from the limit. Since the function is so steep, this might well drive the ESP down to zero.
	The default value of CPOT is 0.0025.

		c. Emissions equal to world limit

From II.A.5.20 and II.A.5.21, we can solve for the control rate mEL needed to satisfy the second condition for a solution in case 3, Table 1:

(III.B.1.4)	mEL(t) = 1 - [WEL(t) - LU(t)]/[s(t)Q(t)]
	
In the emissions limit case, the limit is a cap, not a target to be met; if unregulated emissions would be below the limit in a certain period, the control rate will simply be zero in the solution, not negative.
Thus,

(III.B.1.5)	mEL(t) = 0, s(t)Q(t) < WEL(t) - LU(t)

From II.A.5.22, we can solve for the carbon tax tEL that induces the desired control rate:

(III.B.1.6)	tEL(t) = 1000(b1(t)b2/[s(t)(1+D(t)/100)])[1-min([WEL(t)-LU(t)]/s(t)Q(t), 1)]b2-1

Plugging this formula into the Unconstrained carbon tax row will satisfy the solution condition for the Carbon tax in the emissions limits case. This can be carried out via the macro LimCT.

	D. Macros

For convenience, a few macros have been programmed into DICE-99:

		1. ZeroDam

	Sets the damage coefficients q1 and q2 (Model, rows 5 and 6) to zero. Can be used when solving the geoengineering case.

		2. DefDam

	Sets the damage coefficients q1 and q2 (Model, rows 5 and 6) to their default values. To be used after ZeroDam has been run to return the spreadsheet to normal.

		3. ZeroCT

	Sets the Unconstrained carbon tax (Model, row 110) and thus the Carbon tax (Model, row 99) to zero. To be used when solving the base case.

		4. FOSR (First order, Savings rate)

	Uses Goal Seek command to find values of the Savings rate (Model, row 100) that set DiffC (Model, row 105) equal to zero, starting with period 1 and proceeding to the next-to-last period in turn. In period 35, the last period, it finds the value of the Savings rate that sets the Terminal condition for capital (Model, cell AK78) equal to zero. Can be used to find optimal savings rates.

		5. OptCT.(Optimal Carbon Tax)

	Copies the values of the Iteration step (Model, row 109) into the Unconstrained carbon tax row (Model, row 110). Repeats this operation 100 times. Can be used to find the optimal carbon tax. 

		6. LimCT (Limits Carbon Tax)

	Sets tUC equal to tEL (see III.B.1.6) and thus Total carbon dioxide emissions (Model, row 81) equal to the World emissions limit (Model, row 26)

		7. Tlimdfunction

	This macro is used to change the way the Environmental shadow price of carbon (ESP, row 4) is calculated, as explained in section III.B.2.b. When this is done, the Environmental shadow price assumes a damage function of the form III.B.1.2. Used when setting up the temperature limits case.
	
		8. Climdfunction

	This macro is used to change the way  ESP (ESP, row 3) is calculated, as explained in section III.B.2.b. When this is done, the Environmental shadow price assumes a damage function of the form III.B.1.3. Used when setting up the concentration limits case.

		9. Normaldfunction

	Sets the ESP (ESP, row 3) and MCD (ESP, row 4) formulas back to the default. When this macro is run, the Environmental shadow price assumes a damage function of the form III.B.1.1. To be used to restore the default formulas on the ESP worksheet after Tlimdfunction or Climdfunction is run.

	E. Metamacros
Metamacros have been programmed into the spreadsheet to solve cases 1-4 by calling the macros above. They economize on user time and prevent errors by

		a) Making sure the spreadsheet is correctly set up for the given case
		b) Carrying out the expected number of iterations of each macro necessary to 
			achieve convergence.
		c) Solving all conditions for a solution.

		 1. BASE

	Solves the base case. Calls the following macros in order:

		a) DefDam
		b) Normaldfunction
		c) ZeroCT
		d) FOSR (5 times)
	
		 2. Optimal

	Solves the optimal case. Calls the following macros in order:

		a) DefDam
		b) Normaldfunction
		c) OptCT (5 times)
		d) FOSR (5 times)
		e) OptCT (5 times)
		f) FOSR (5 times)
		g) OptCT (5 times)

		 3. Emlim

	Solves the emissions limits case. Calls the following macros in order:

		a) DefDam
		b) Normaldfunction
		c) LimCT
		d) FOSR (5 times)
		e) LimCT
		f) FOSR (5 times)
		g) LimCT

		4. Geo

	Solves the geoengineering case. Calls the following macros in order

		a) ZeroDam
		b) Normaldfunction
		c) ZeroCT (5 times)
		d) FOSR (5 times)

	F. Notes on Solving the Model

		1. EXCEL solver

	An alternative way to solve the model would be to use the EXCEL solver. For instance, one could in theory solve the optimal case by maximizing Welfare (Model, row 95), varying the Control Variables (Model, rows 99 and 100). Our experience with the EXCEL solver has not been good; we have found that it is difficult or computer time-intensive to get it to converge.

		2. Solution time

	The macros generally require 5-15 seconds of computer time on a 500 MHz machine. The metamacros require from 1-4 minutes.

		3. Constant savings rates

	We have found that optimal savings rates do not change much from case to case. Thus, assuming constant savings rates will often lose the user little in terms of solution accuracy while allowing him to avoid having to reoptimize the Savings rate with each new solution.

		4. Convergence criteria

	The desired solution accuracy – the values of DiffC and DiffE judged small enough to signify algorithm convergence – is arbitrary. Getting DiffE and DiffC below 0.5 should not be too difficult in most cases.

		5. Solving the temperature and concentration limits cases.
	
	It is important to have good starting values for the Carbon tax in these cases. If the  the starting carbon taxes are far from the optimum, the algorithm is likely to either be unstable or to converge to zero. The instability is explained in section III.B.2.b. t(t) = 0 will likely satisfy the condition for an optimum in these cases despite the fact that it does not represent an optimum. This is because with a zero Carbon tax, which implies temperatures and concentrations well in excess of a strict limit,  the damage functions III.B.1.2 and III.B.1.3 will imply that close to 100% of output is lost to climate damages, which will imply zero environmental shadow prices because there is nothing left to lose. 
	The user may have to experiment with starting values in the Unconstrained carbon tax row in order to get the OptCT algorithm to work in these cases. Good starting values in these cases will produce Environmental shadow prices that are neither zero nor astronomically high, at least until late periods. We searched for starting values by simply varying the Unconstrained carbon tax (Model, row 110) until the climatic variable of interest was kept on a path that increased until it was just below the limit in late periods. 
	On the Saved Output page we include the values for the optimal carbon tax from the 2.5-degree temperature limit case and the 1192.8-GtC concentration limit cases (1192.8 GtC is double our assumed preindustrial concentration)
	Since the starting values are a matter of trial and error, we have not automated the solution to these cases via a metamacro. Instead, we provide the following list of steps one should take to solve these cases:

		1. Run the macro DefDam
		2. Run the macro Tlimdfunction or Climdfunction, depending on the case.
3. Choose starting values for the Unconstrained carbon tax (Model, row 110),  following the guidelines above.
		4. Run the macro OptCT until DiffE has converged satisfactorily close to zero.
		5. Run the macro FOSR to optimize Savings rate
6. Repeat steps 4 and 5 until both Savings rate and Carbon tax satisfy solution conditions.
		7. Record the output of interest
		8. Run Normaldfunction to return the ESP worksheet to its default formulas.

	One may find that somewhere between steps 4-8,  new starting values for the Carbon tax need to be selected.
	Note that in the temperature and concentration limits cases, to see the environmental shadow price implied by the damage function on the Model worksheet, one needs to return to the default formulas on the ESP worksheet. The alternative formulas are simply tools for solving the cases. (See III.B.2.b if this is unclear.)
	If the user has difficulty getting a solution to these cases, or finds that the solution allows unsatisfactory deviation of the target variable from the limit, he can alter either the Steep damage curve parameters on the ESP worksheet (rows 223-226) or the CPOT parameter (Model, row 27). The effect of changing CPOT is explained above in sections III.B.2.b. Increasing LRP, decreasing URP, decreasing PLRP, or increasing PURP will all tend to make the damage functions III.B.1.2 and III.B.1.3 more closely resemble a step function, and thus will yield a solution carbon tax that is closer to that which would actually be optimal in this model with an environmental target (see III.B.2.b). However, making any of these changes comes at the drawback of making it more difficult to get the optimal carbon tax algorithm to converge (see III.B.2.b). The default values for CPOT and the Steep damage curve parameters have generally allowed satisfactory solutions to be found with reasonable effort and time.