diff --git a/CITATION.cff b/CITATION.cff
index f2145643344bc9f7da6964ed4954edb95aea97b0..60fce63b18f6a584a2fb85f0cfa7dd618b33fb59 100644
--- a/CITATION.cff
+++ b/CITATION.cff
@@ -26,7 +26,8 @@ authors:
       affiliation: "Potsdam Institute for Climate Impact Research"
       
     - family-names:	Dirnaichner	    
-      given-names: 	Alois	    
+      given-names: 	Alois
+      orcid: https://orcid.org/0000-0002-3240-2608
       affiliation: "Potsdam Institute for Climate Impact Research"
       
     - family-names:	Giannousakis	    
diff --git a/core/equations.gms b/core/equations.gms
index a9647754c0bffa6573ca78bb749d4db0c48b69bc..36fb20aaaf8d4be66be469fe85d0064819b2e4b9 100644
--- a/core/equations.gms
+++ b/core/equations.gms
@@ -172,10 +172,11 @@ $endif
 ***---------------------------------------------------------------------------
 *' Transformation from secondary to final energy:
 ***---------------------------------------------------------------------------
-q_transSe2fe(t,regi,se2fe(enty,enty2,te))..
-         pm_eta_conv(t,regi,te) * vm_demSe(t,regi,enty,enty2,te)
-         =e=
-         vm_prodFe(t,regi,enty,enty2,te) 
+q_transSe2fe(t,regi,se2fe(entySE,entyFE,te)) .. 
+    pm_eta_conv(t,regi,te)
+  * vm_demSE(t,regi,entySE,entyFE,te)
+  =e=
+  vm_prodFE(t,regi,entySE,entyFE,te) 
 ;
 
 
@@ -506,34 +507,35 @@ q_emiTeDetail(t,regi,enty,enty2,te,enty3)$(   emi2te(enty,enty2,te,enty3)
 *' Total energy-emissions:
 ***--------------------------------------------------
 *mh calculate total energy system emissions for each region and timestep:
-q_emiTe(t,regi,emiTe(enty))..
+q_emiTe(t,regi,emiTe(enty)) .. 
   vm_emiTe(t,regi,enty)
   =e=
-***   emissions from fuel combustion
+    !! emissions from fuel combustion
     sum(emi2te(enty2,enty3,te,enty),     
       vm_emiTeDetail(t,regi,enty2,enty3,te,enty)
     )
-***   emissions from non-conventional fuel extraction
+    !! emissions from non-conventional fuel extraction
   + sum(emi2fuelMine(enty,enty2,rlf),       
       p_cint(regi,enty,enty2,rlf)
     * vm_fuExtr(t,regi,enty2,rlf)
     )$( c_cint_scen eq 1 )
-***   emissions from conventional fuel extraction
-  + sum(pe2rlf(enty3,rlf2),sum(enty2,       
-     (p_cintraw(enty2)
-      * pm_fuExtrOwnCons(regi, enty2, enty3) 
-      * vm_fuExtr(t,regi,enty3,rlf2)
-     )$(pm_fuExtrOwnCons(regi, enty, enty2) gt 0)    
-    ))
-***   Industry CCS emissions
+    !! emissions from conventional fuel extraction
+  + sum((pe2rlf(enty3,rlf2),enty2)$( pm_fuExtrOwnCons(regi,enty,enty2) gt 0 ),
+      p_cintraw(enty2)
+    * pm_fuExtrOwnCons(regi,enty2,enty3) 
+    * vm_fuExtr(t,regi,enty3,rlf2)
+    )
+    !! Industry CCS emissions
   - sum(emiMac2mac(emiInd37_fuel,enty2),
       vm_emiIndCCS(t,regi,emiInd37_fuel)
     )$( sameas(enty,"co2") )
-	
-***   LP, Valve from cco2 capture step, to mangage if capture capacity and CCU/CCS capacity don't have the same lifetime
+    !! Valve from cco2 capture step, to mangage if capture capacity and CCU/CCS 
+    !! capacity don't have the same lifetime
   + v_co2capturevalve(t,regi)$( sameas(enty,"co2") )
-***  JS CO2 from short-term CCU
-  + sum(teCCU2rlf(te2,rlf), vm_co2CCUshort(t,regi,"cco2","ccuco2short",te2,rlf) )
+    !! CO2 from short-term CCU
+  + sum(teCCU2rlf(te2,rlf), 
+      vm_co2CCUshort(t,regi,"cco2","ccuco2short",te2,rlf)
+    )
 ;
 
 ***------------------------------------------------------
diff --git a/core/input/generisdata_tech_SSP5.prn b/core/input/generisdata_tech_SSP5.prn
index 8c7e3e25d92f8dff25c01816de1153497825f5ba..0aa6c1365cb6a5a8d25a3a4bcfcd58d70e79ee3a 100644
--- a/core/input/generisdata_tech_SSP5.prn
+++ b/core/input/generisdata_tech_SSP5.prn
@@ -62,7 +62,7 @@ mix0                           0.00                    0.03
 eta                 1.00       0.95        0.35        0.72        0.39        0.28        0.55        0.61        0.55        0.36        0.55        0.93        0.40        0.41
 omf                            0.03        0.04        0.04        0.04        0.04        0.04        0.10        0.10        0.07        0.11        0.05        0.04        0.04
 omv                                       30.11       25.00       31.50       50.50       10.90       10.60       10.60       97.27       38.99        5.05                   10.60
-lifetime              20         35          40          40          40          40          40          35          35          35          20          20          35          35
+lifetime              35         35          40          40          40          40          40          35          35          35          20          20          35          35
 
 +                geohdr       geohe       hydro        wind         spv       solhe         csp
 tech_stat            1
diff --git a/core/sets.gms b/core/sets.gms
index dedd238121fbcc484ea38dcf2ab25363d8a450ba..6492599581e613188efb219efe1f57047e47e927 100755
--- a/core/sets.gms
+++ b/core/sets.gms
@@ -1939,23 +1939,16 @@ steps         "iterator for MAC steps"
 ***                             Helpful constructs: alias
 ***-----------------------------------------------------------------------------
 ***-----------------------------------------------------------------------------
-alias(t,t2);
-alias(t,t3);
-alias(tall,tall2);
-alias(tall,tall3);
+alias(t,t2,t3);
+alias(tall,tall2,tall3);
 alias(ttot,ttot2);
 alias(opTimeYr,opTimeYr2);
 alias(teVRE,teVRE2);
 alias(teLoc,teLoc2);
 alias(all_te,all_te2);
-alias(te,te2);
+alias(te,te2,te3);
 alias(all_enty,all_enty2);
-alias(enty,enty2);
-alias(enty,enty3);
-alias(enty,enty4);
-alias(enty,enty5);
-alias(enty,enty6);
-alias(enty,enty7);
+alias(enty,enty2,enty3,enty4,enty5,enty6,enty7);
 alias(entyPE,entyPE2);
 alias(entySe,entySe2);
 alias(entyFe,entyFe2);
@@ -2522,5 +2515,6 @@ es2ppfen(all_esty,all_in)      "matching ES in ESM to ppfEn in MACRO"
 
 alias(ccs2te,ccs2te2);
 alias(pe2se,pe2se2);
+alias(se2fe,se2fe2);
 
 *** EOF ./core/sets.gms
diff --git a/doc/images/MAC_costs.png b/doc/images/MAC_costs.png
new file mode 100644
index 0000000000000000000000000000000000000000..b4bdb721a65356466986fb440e55c29b5b6097f7
Binary files /dev/null and b/doc/images/MAC_costs.png differ
diff --git a/modules/37_industry/fixed_shares/equations.gms b/modules/37_industry/fixed_shares/equations.gms
index 84c42339f9e49a01da8dda06ec1e6e6478ab12dd..f0b827491e6743609be483e67463a30b9aca464e 100644
--- a/modules/37_industry/fixed_shares/equations.gms
+++ b/modules/37_industry/fixed_shares/equations.gms
@@ -60,9 +60,25 @@ q37_cementCCS(ttot,regi)$( ttot.val ge cm_startyear
 
 *' Industry CCS costs (by subsector) are equal to the integral below the MAC 
 *' cost curve.
-*' $$C_j = E_{\text{base},j} p \sum_{i = 1}^{n} \left(q_{n,j} - q_{i,j}\right)$$
-*' with $E_\text{base}$ the baseline emissions, $p$ the price step, and $q_i$ 
-*' the abatement fraction at step $i$ on the MAC.
+*' For the calculation, consider this figure:
+*' ![MAC curve example](MAC_costs.png)
+*' To make the calculations involving MAC curves leaner, they are discretised 
+*' into 5 $/tC steps (parameter `sm_dmac`) and transformed into step-wise 
+*' curves.  The parameter `pm_macStep` holds the current step on the MAC curve
+*' the model is on (given the CO~2~ price of the last iteration), and 
+*' `pm_macAbat` holds the abatement level (as a fraction) on that step.  The 
+*' emission abatement equals the area under the MAC curve (turqoise area in the 
+*' figure).  To calculate it, `pm_macStep` is multiplied by `pm_macAbat` (the 
+*' horizontal and vertical lines enclosing the colourd rectangle in the 
+*' figure).  The `sum(steps$( ord(steps) eq pm_macStep ... )` part simply 
+*' selects the right step within the MAC curve.  From this product (rectangle),
+*' the area above the MAC curve (pink) is subtractad.  To calculate it, the 
+*' abatement level at each MAC step up to and including the current step is 
+*' summed up.  The area is subdivided into `pm_macStep` rectangles of height 
+*' `1 sm_dmac` and width `pm_macAbat(steps)` (which is zero for the first $n$ 
+*' steps at which price level no abatement is available). 
+*' Multiplying the area under the curve with the step width `sm_dmac` and the 
+*' baseline emissions (before mitigation) converts the units to $/tC and GtC.
 q37_IndCCSCost(ttot,regi,emiInd37)$( ttot.val ge cm_startyear ) .. 
   vm_IndCCSCost(ttot,regi,emiInd37)
   =e=
diff --git a/modules/37_industry/fixed_shares/postsolve.gms b/modules/37_industry/fixed_shares/postsolve.gms
index 50eb92fa517a14fcf44f68226523c17b4fda2d7f..314d19e086469f72336934b500d1e755bafb1edf 100644
--- a/modules/37_industry/fixed_shares/postsolve.gms
+++ b/modules/37_industry/fixed_shares/postsolve.gms
@@ -17,6 +17,12 @@ loop (enty$( sameas(enty,"co2") OR sameas(enty,"cco2") ),
           * p37_shIndFE(regi,in,secInd37)
           )
         * p37_fctEmi(entyFE)
+        !! share of SE in FE production
+        * ( vm_prodFE.l(ttot,regi,entySE,entyFE,te2)
+          / sum(se2fe2(entySE2,entyFE,te3),
+              vm_prodFE.l(ttot,regi,entySE2,entyFE,te3)
+            )
+          )
         )
         !! share of PE in SE production
       * ( vm_prodSE.l(ttot,regi,entyPE,entySE,te)