diff --git a/vaspparser/vasp_parser.py b/vaspparser/vasp_parser.py
index 09d7f50c2ba411684ace1df7b5828c1b6ab72d8c..b4b51a0db0525b97b8607f07f899e461bcbeb3fc 100644
--- a/vaspparser/vasp_parser.py
+++ b/vaspparser/vasp_parser.py
@@ -634,6 +634,20 @@ class VASPOutcar(Parser):
             ions = [ions] if isinstance(ions, int) else ions
             mass_valence = self.parser.get('mass_valence', [])
             if len(ions) != len(species):
+                # get it from POSCAR
+                path = os.path.join(self.parser.maindir, 'POSCAR%s' % os.path.basename(
+                    self.parser.mainfile).strip('OUTCAR'))
+                path = path if os.path.isfile(path) else os.path.join(
+                    self.parser.maindir, 'POSCAR')
+                with open(path) as f:
+                    for _ in range(7):
+                        line = f.readline()
+                        try:
+                            ions = [int(n) for n in line.split()]
+                        except Exception:
+                            pass
+            if len(ions) != len(species):
+                self.parser.logger.error('Inconsistent number of ions and species.')
                 return self._atom_info
 
             self._atom_info['n_atoms'] = sum(ions)