diff --git a/parser/parser-octopus/parser_octopus.py b/parser/parser-octopus/parser_octopus.py
index 74864f2718ae2576c715d844d17dfe7994e0ba3c..33b2e2446e38d2ebdb3b7656a175fd08bb2646fb 100644
--- a/parser/parser-octopus/parser_octopus.py
+++ b/parser/parser-octopus/parser_octopus.py
@@ -309,7 +309,6 @@ def parse(fname, fd):
 
                 pew.addValue('electronic_structure_method', 'DFT')
 
-                # XXXXXXXXXXXX read XC functional from text output instead
                 if oct_theory_level == 'dft':
                     ndim = int(kwargs.get('dimensions', 3))
                     assert ndim in range(1, 4), ndim
@@ -317,9 +316,10 @@ def parse(fname, fd):
                                   'lda_x_2d + lda_c_2d_amgb',
                                   'lda_x + lda_c_pz_mod'][ndim - 1]
                     xcfunctional = kwargs.get('xcfunctional', default_xc)
-                    xcfunctional = ''.join(xcfunctional.split()).upper()
-                    with open_section('section_XC_functionals'):
-                        pew.addValue('XC_functional_name', xcfunctional)
+                    for functional in xcfunctional.split('+'):
+                        functional = functional.strip().upper()
+                        with open_section('section_XC_functionals'):
+                            pew.addValue('XC_functional_name', functional)
 
                 # Convergence parameters?