Index: src/Parser/PcpParser.cpp
===================================================================
--- src/Parser/PcpParser.cpp	(revision 6a465e4248cc6569f489730a4176224357fc5126)
+++ src/Parser/PcpParser.cpp	(revision fcac720d9b6b26c107f65986d20e213556f266e5)
@@ -548,18 +548,43 @@
   *file << "#Ion_TypeNr._Nr.R[0]    R[1]    R[2]    MoveType (0 MoveIon, 1 FixedIon)" << endl;
   map<int, int> ZtoCountMap;
+  map<atom *, int> AtomtoCountMap;
   pair <   map<int, int>::iterator, bool > Inserter;
-  int nr = 0;
-  for (vector<atom *>::const_iterator AtomRunner = allatoms.begin();AtomRunner != allatoms.end();++AtomRunner) {
-    Inserter = ZtoCountMap.insert( pair<int, int>((*AtomRunner)->getType()->getAtomicNumber(), 1) );
-    if (!Inserter.second)
-      Inserter.first->second += 1;
-    const int Z = (*AtomRunner)->getType()->getAtomicNumber();
-    *file << "Ion_Type" << ZtoIndexMap[Z] << "_" << ZtoCountMap[Z] << "\t"  << fixed << setprecision(9) << showpoint;
-    *file << (*AtomRunner)->at(0) << "\t" << (*AtomRunner)->at(1) << "\t" << (*AtomRunner)->at(2);
-    *file << "\t" << (int)((*AtomRunner)->getFixedIon());
-    if ((*AtomRunner)->getAtomicVelocity().Norm() > MYEPSILON)
-      *file << "\t" << scientific << setprecision(6) << (*AtomRunner)->getAtomicVelocity()[0] << "\t" << (*AtomRunner)->getAtomicVelocity()[1] << "\t" << (*AtomRunner)->getAtomicVelocity()[2] << "\t";
-    *file << " # molecule nr " << nr++ << endl;
-  }
+  bool ContinueStatus = true;
+  bool AddNewLine = false;
+  size_t step = 0;
+  do {
+    int nr = 0;
+    ContinueStatus = false;
+    for (vector<atom *>::const_iterator AtomRunner = allatoms.begin();AtomRunner != allatoms.end();++AtomRunner) {
+      if ((*AtomRunner)->getTrajectorySize() > step) {
+        if (step == 0) {  // fill list only on first step
+          Inserter = ZtoCountMap.insert( pair<int, int>((*AtomRunner)->getType()->getAtomicNumber(), 1) );
+          if (!Inserter.second)
+            Inserter.first->second += 1;
+          AtomtoCountMap.insert( make_pair((*AtomRunner), Inserter.first->second) );
+        }
+        if (AddNewLine) {
+          AddNewLine = false;
+          *file << endl;
+        }
+        const int Z = (*AtomRunner)->getType()->getAtomicNumber();
+        *file << "Ion_Type" << ZtoIndexMap[Z] << "_" << AtomtoCountMap[(*AtomRunner)] << "\t"  << fixed << setprecision(9) << showpoint;
+        *file << (*AtomRunner)->atStep(0, step)
+            << "\t" << (*AtomRunner)->atStep(1,step)
+            << "\t" << (*AtomRunner)->atStep(2,step);
+        *file << "\t" << (int)((*AtomRunner)->getFixedIon());
+        if ((*AtomRunner)->getAtomicVelocityAtStep(step).Norm() > MYEPSILON)
+          *file << "\t" << scientific << setprecision(6)
+              << (*AtomRunner)->getAtomicVelocityAtStep(step)[0] << "\t"
+              << (*AtomRunner)->getAtomicVelocityAtStep(step)[1] << "\t"
+              << (*AtomRunner)->getAtomicVelocityAtStep(step)[2] << "\t";
+        *file << " # molecule nr " << nr++ << endl;
+        ContinueStatus = true;  // as long as a single atom still has trajectory points, continue
+      }
+    }
+    ++step;
+    if (ContinueStatus)
+      AddNewLine = true;
+  } while (ContinueStatus);
 }
 
Index: src/config.cpp
===================================================================
--- src/config.cpp	(revision 6a465e4248cc6569f489730a4176224357fc5126)
+++ src/config.cpp	(revision fcac720d9b6b26c107f65986d20e213556f266e5)
@@ -461,5 +461,4 @@
   const element *elementhash[MAX_ELEMENTS];
   char name[MAXSTRINGSIZE];
-  char keyword[MAXSTRINGSIZE];
   int Z = -1;
   int No[MAX_ELEMENTS];
@@ -497,9 +496,9 @@
       return;
     }
-    FileBuffer->CurrentLine++;
-    //Log() << Verbose(0) << FileBuffer->buffer[ FileBuffer->LineMapping[FileBuffer->CurrentLine]];
+
+    FileBuffer->CurrentLine++;  // skip to next line
     FileBuffer->MapIonTypesInBuffer(NoAtoms);
     for (int i=FileBuffer->CurrentLine; i<FileBuffer->NoLines;++i) {
-      Log() << Verbose(0) << FileBuffer->buffer[ FileBuffer->LineMapping[i] ];
+      DoLog(4) && (Log() << Verbose(4) << FileBuffer->buffer[ FileBuffer->LineMapping[i] ]);
     }
 
@@ -535,5 +534,5 @@
                 neues = World::getInstance().createAtom();
                 AtomList[i][j] = neues;
-                std::cout << "filling LinearList [ (FileBuffer->LineMapping[" << FileBuffer->CurrentLine << "]) = " << FileBuffer->LineMapping[FileBuffer->CurrentLine] << " with " << neues << endl;
+                DoLog(4) && (Log() << Verbose(4) << "Filling LinearList [ (FileBuffer->LineMapping[" << FileBuffer->CurrentLine << "]) = " << FileBuffer->LineMapping[FileBuffer->CurrentLine] << " with " << neues << endl);
                 LinearList[ FileBuffer->LineMapping[FileBuffer->CurrentLine] ] = neues;
                 neues->setType(elementhash[i]); // find element type
@@ -547,4 +546,5 @@
               DoLog(3) && (Log() << Verbose(3) << "INFO: Line contains " << tokens_size << " tokens." << std::endl);
               // and parse
+              tempVector.Zero();
               if (tokens_size >= 5) { // only AtomicPosition and FixedIon
                 DoLog(3) && (Log() << Verbose(3) << "INFO: Parsing AtomicPosition and FixedIon" << std::endl);
@@ -555,16 +555,18 @@
                 neues->setFixedIon(_fixedion == 1);
               }
+              tempVector.Zero();
               if (tokens_size >= 8) { // AtomicVelocity
                 DoLog(3) && (Log() << Verbose(3) << "INFO: Parsing AtomicVelocity" << std::endl);
                 for (int i=0;i<NDIM;++i)
                   tempVector[i] = toDouble(*tok_iter++);
-                neues->setAtomicVelocityAtStep(step, tempVector);
               }
+              neues->setAtomicVelocityAtStep(step, tempVector);
+              tempVector.Zero();
               if (tokens_size >= 11) {  // AtomicForce
                 DoLog(3) && (Log() << Verbose(3) << "INFO: Parsing AtomicForce" << std::endl);
                 for (int i=0;i<NDIM;++i)
                   tempVector[i] = toDouble(*tok_iter++);
-                neues->setAtomicForceAtStep(step, tempVector);
               }
+              neues->setAtomicForceAtStep(step, tempVector);
               std::stringstream output;
               output << "Parsed position of step " << (step+1) << ": ";
@@ -597,130 +599,4 @@
     }
 
-//    if (!FastParsing) {
-//      // parse in trajectories
-//      bool status = true;
-//      while (status) {
-//        DoLog(0) && (Log() << Verbose(0) << "Currently checking on MD step " << repetition+1 << "." << endl);
-//        for (int i=0; i < MaxTypes; i++) {
-//          sprintf(name,"Ion_Type%i",i+1);
-//          for(int j=0;j<No[i];j++) {
-//            sprintf(keyword,"%s_%i",name, j+1);
-//            DoLog(3) && (Log() << Verbose(3) << "Looking for " << keyword << " of " << (repetition) << " repetition." << std::endl);
-//            DoLog(3) && (Log() << Verbose(3) << "INFO: Parsing AtomicPosition." << std::endl);
-//            for (int k=0;k<NDIM;++k) { // repetition=1 is correct, as we advance eventually by sequential=1!
-//              status = status && ParseForParameter(verbose,FileBuffer, (const char*)keyword, 0, 1+k, 1, double_type, &tempVector[k], 1, (repetition == 0) ? critical : optional);
-//            }
-//            if (!status)
-//              break;
-//
-//            if (repetition == 0) {
-//              neues = World::getInstance().createAtom();
-//              AtomList[i][j] = neues;
-//              std::cout << "filling LinearList [ (FileBuffer->LineMapping[" << FileBuffer->CurrentLine << "]) = " << FileBuffer->LineMapping[FileBuffer->CurrentLine] << " with " << neues << endl;
-//              LinearList[ FileBuffer->LineMapping[FileBuffer->CurrentLine] ] = neues;
-//              neues->setType(elementhash[i]); // find element type
-//            } else
-//              neues = AtomList[i][j];
-//
-//            DoLog(3) && (Log() << Verbose(3) << "INFO: Parsing FixedIon." << std::endl);
-//            status = status && ParseForParameter(verbose,FileBuffer, (const char*)keyword, 0, 4, 1, int_type, &_fixedion, 1, (repetition == 0) ? critical : optional);
-//            neues->setFixedIon(_fixedion == 1);
-//
-//            // check size of vectors
-//            if (neues->getTrajectorySize() <= (unsigned int)(repetition)) {
-//              neues->ResizeTrajectory(repetition+10);
-//              //Log() << Verbose(0) << "Increasing size for trajectory array of " << keyword << " to " << (repetition+10) << "." << endl;
-//            }
-//
-//            // put into trajectories list
-//            neues->setPosition(repetition, tempVector);
-//
-//            // parse velocities if present
-//            DoLog(3) && (Log() << Verbose(3) << "INFO: Parsing AtomicVelocity." << std::endl);
-//            bool velocityStatus = true;
-//            for (int k=0;k<NDIM;++k)
-//              velocityStatus = velocityStatus && ParseForParameter(verbose,FileBuffer, (const char*)keyword, 0, 5+k, 1, double_type, &tempVector[k], 1,optional);
-//            if (!velocityStatus) {
-//              neues->setAtomicVelocity(repetition, zeroVec);
-//            } else
-//              neues->setAtomicVelocity(repetition, tempVector);
-//
-//            // parse forces if present
-//            DoLog(3) && (Log() << Verbose(3) << "INFO: Parsing AtomicForce." << std::endl);
-//            bool forceStatus = true;
-//            for (int k=0;k<NDIM;++k)
-//              forceStatus = forceStatus && ParseForParameter(verbose,FileBuffer, (const char*)keyword, (k==(NDIM-1)) ? 1 : 0, 8+k, 1, double_type, &tempVector[k], 1,optional);
-//            if (!forceStatus) {
-//              ++FileBuffer->CurrentLine;  // as above sequential=1 did not apply due to end of file
-//              neues->setAtomicForce(repetition, zeroVec);
-//            } else {
-//              neues->setAtomicForce(repetition, tempVector);
-//            }
-//
-//            std::stringstream output;
-//            output << "Parsed position of step " << (repetition+1) << ": ";
-//            output << neues->getPosition(repetition);          // next step
-//            output << "\t";
-//            output << (neues->getFixedIon() ? "true" : "false");
-//            output << "\t";
-//            output << neues->getAtomicVelocity(repetition);          // next step
-//            output << "\t";
-//            output << neues->getAtomicForce(repetition);          // next step
-//            DoLog(2) && (Log() << Verbose(2) << output.str() << endl);
-//          }
-//        }
-//        repetition++;
-//      }
-//      repetition--;
-//      if (repetition <= 1)  // if onyl one step, desactivate use of trajectories
-//        mol->MDSteps = 0;
-//      else {
-//        DoLog(0) && (Log() << Verbose(0) << "Found " << repetition+1 << " trajectory step(s)." << endl);
-//        mol->MDSteps = repetition;
-//      }
-//    } else {
-//      // find the maximum number of MD steps so that we may parse last one (Ion_Type1_1 must always be present, because is the first atom)
-//      repetition = 0;
-//      while ( ParseForParameter(verbose,FileBuffer, "Ion_Type1_1", 0, 1, 1, double_type, &value[0], repetition, (repetition == 0) ? critical : optional) &&
-//              ParseForParameter(verbose,FileBuffer, "Ion_Type1_1", 0, 2, 1, double_type, &value[1], repetition, (repetition == 0) ? critical : optional) &&
-//              ParseForParameter(verbose,FileBuffer, "Ion_Type1_1", 0, 3, 1, double_type, &value[2], repetition, (repetition == 0) ? critical : optional))
-//        repetition++;
-//      DoLog(0) && (Log() << Verbose(0) << "I found " << repetition << " times the keyword Ion_Type1_1." << endl);
-//      // parse in molecule coordinates
-//      for (int i=0; i < MaxTypes; i++) {
-//        sprintf(name,"Ion_Type%i",i+1);
-//        for(int j=0;j<No[i];j++) {
-//          sprintf(keyword,"%s_%i",name, j+1);
-//          if (repetition == 0) {
-//            neues = World::getInstance().createAtom();
-//            AtomList[i][j] = neues;
-//            LinearList[ FileBuffer->LineMapping[FileBuffer->CurrentLine] ] = neues;
-//            neues->setType(elementhash[i]); // find element type
-//          } else
-//            neues = AtomList[i][j];
-//          // then parse for each atom the coordinates as often as present
-//          ParseForParameter(verbose,FileBuffer, keyword, 0, 1, 1, double_type, &tempVector[0], repetition,critical);
-//          ParseForParameter(verbose,FileBuffer, keyword, 0, 2, 1, double_type, &tempVector[1], repetition,critical);
-//          ParseForParameter(verbose,FileBuffer, keyword, 0, 3, 1, double_type, &tempVector[2], repetition,critical);
-//          neues->setPosition(tempVector);
-//          bool _fixedion;
-//          ParseForParameter(verbose,FileBuffer, keyword, 0, 4, 1, int_type, &_fixedion, repetition,critical);
-//          neues->setFixedIon(_fixedion);
-//          bool velocityStatus = true;
-//          velocityStatus = velocityStatus &&
-//              ParseForParameter(verbose,FileBuffer, keyword, 0, 5, 1, double_type, &tempVector[0], repetition,optional) &&
-//              ParseForParameter(verbose,FileBuffer, keyword, 0, 6, 1, double_type, &tempVector[1], repetition,optional) &&
-//              ParseForParameter(verbose,FileBuffer, keyword, 1, 7, 1, double_type, &tempVector[2], repetition,optional);
-//          if (!velocityStatus)
-//            neues->setAtomicVelocity(zeroVec);
-//          else
-//            neues->setAtomicVelocity(tempVector);
-//
-//          // here we don't care if forces are present (last in trajectories is always equal to current position)
-//          neues->setType(elementhash[i]); // find element type
-//          mol->AddAtom(neues);
-//        }
-//      }
-//    }
     // put atoms into the molecule in their original order
     for(map<int, atom*>::iterator runner = LinearList.begin(); runner != LinearList.end(); ++runner) {
Index: tests/regression/Parser/Pcp/post/testmulti.conf
===================================================================
--- tests/regression/Parser/Pcp/post/testmulti.conf	(revision fcac720d9b6b26c107f65986d20e213556f266e5)
+++ tests/regression/Parser/Pcp/post/testmulti.conf	(revision fcac720d9b6b26c107f65986d20e213556f266e5)
@@ -0,0 +1,119 @@
+# ParallelCarParinello - main configuration file - created with molecuilder
+
+mainname	pcp	# programm name (for runtime files)
+defaultpath	not specified	# where to put files during runtime
+pseudopotpath	not specified	# where to find pseudopotentials
+
+ProcPEGamma	8	# for parallel computing: share constants
+ProcPEPsi	1	# for parallel computing: share wave functions
+DoOutVis	0	# Output data for OpenDX
+DoOutMes	1	# Output data for measurements
+DoOutOrbitals	0	# Output all Orbitals
+DoOutCurr	0	# Ouput current density for OpenDx
+DoOutNICS	0	# Output Nucleus independent current shieldings
+DoPerturbation	0	# Do perturbation calculate and determine susceptibility and shielding
+DoFullCurrent	0	# Do full perturbation
+DoConstrainedMD	0	# Do perform a constrained (>0, relating to current MD step) instead of unconstrained (0) MD
+Thermostat	Berendsen	2.5	# Which Thermostat and its parameters to use in MD case.
+CommonWannier	0	# Put virtual centers at indivual orbits, all common, merged by variance, to grid point, to cell center
+SawtoothStart	0.01	# Absolute value for smooth transition at cell border 
+VectorPlane	0	# Cut plane axis (x, y or z: 0,1,2) for two-dim current vector plot
+VectorCut	0	# Cut plane axis value
+AddGramSch	1	# Additional GramSchmidtOrtogonalization to be safe
+Seed		1	# initial value for random seed for Psi coefficients
+
+MaxOuterStep	0	# number of MolecularDynamics/Structure optimization steps
+Deltat	0.01	# time per MD step
+OutVisStep	10	# Output visual data every ...th step
+OutSrcStep	5	# Output "restart" data every ..th step
+TargetTemp	0.000950045	# Target temperature
+MaxPsiStep	3	# number of Minimisation steps per state (0 - default)
+EpsWannier	1e-07	# tolerance value for spread minimisation of orbitals
+
+# Values specifying when to stop
+MaxMinStep	100	# Maximum number of steps
+RelEpsTotalE	1e-07	# relative change in total energy
+RelEpsKineticE	1e-05	# relative change in kinetic energy
+MaxMinStopStep	10	# check every ..th steps
+MaxMinGapStopStep	1	# check every ..th steps
+
+# Values specifying when to stop for INIT, otherwise same as above
+MaxInitMinStep	100	# Maximum number of steps
+InitRelEpsTotalE	1e-05	# relative change in total energy
+InitRelEpsKineticE	0.0001	# relative change in kinetic energy
+InitMaxMinStopStep	10	# check every ..th steps
+InitMaxMinGapStopStep	1	# check every ..th steps
+
+BoxLength			# (Length of a unit cell)
+20	
+0	20	
+0	0	20	
+
+ECut		128	# energy cutoff for discretization in Hartrees
+MaxLevel	5	# number of different levels in the code, >=2
+Level0Factor	2	# factor by which node number increases from S to 0 level
+RiemannTensor	0	# (Use metric)
+PsiType		0	# 0 - doubly occupied, 1 - SpinUp,SpinDown
+MaxPsiDouble	10	# here: specifying both maximum number of SpinUp- and -Down-states
+PsiMaxNoUp	10	# here: specifying maximum number of SpinUp-states
+PsiMaxNoDown	10	# here: specifying maximum number of SpinDown-states
+AddPsis		0	# Additional unoccupied Psis for bandgap determination
+
+RCut		20	# R-cut for the ewald summation
+StructOpt	0	# Do structure optimization beforehand
+IsAngstroem	1	# 0 - Bohr, 1 - Angstroem
+RelativeCoord	0	# whether ion coordinates are relative (1) or absolute (0)
+MaxTypes	2	# maximum number of different ion types
+
+# Ion type data (PP = PseudoPotential, Z = atomic number)
+#Ion_TypeNr.	Amount	Z	RGauss	L_Max(PP)L_Loc(PP)IonMass	# chemical name, symbol
+Ion_Type1	8	1	1.0	3	3	1.00800000000	Hydrogen	H
+Ion_Type2	3	6	1.0	3	3	12.01100000000	Carbon	C
+#Ion_TypeNr._Nr.R[0]    R[1]    R[2]    MoveType (0 MoveIon, 1 FixedIon)
+Ion_Type1_1	9.782085945	2.645886050	2.645886050	0	1.000000e-01	0.000000e+00	0.000000e+00	 # molecule nr 0
+Ion_Type1_2	9.782085945	2.645886050	4.425886024	0	1.000000e-01	0.000000e+00	0.000000e+00	 # molecule nr 1
+Ion_Type1_3	10.672039608	3.904536878	3.535886037	0	1.000000e-01	0.000000e+00	0.000000e+00	 # molecule nr 2
+Ion_Type1_4	8.532785963	4.787886018	2.645886050	0	1.000000e-01	0.000000e+00	0.000000e+00	 # molecule nr 3
+Ion_Type1_5	8.532785963	4.787886018	4.425886024	0	1.000000e-01	0.000000e+00	0.000000e+00	 # molecule nr 4
+Ion_Type1_6	6.393632318	3.904536877	3.535886037	0	1.000000e-01	0.000000e+00	0.000000e+00	 # molecule nr 5
+Ion_Type1_7	7.283585982	2.645886050	2.645886050	0	1.000000e-01	0.000000e+00	0.000000e+00	 # molecule nr 6
+Ion_Type1_8	7.283585982	2.645886050	4.425886024	0	1.000000e-01	0.000000e+00	0.000000e+00	 # molecule nr 7
+Ion_Type2_1	9.782085945	3.275186040	3.535886037	0	1.000000e-01	0.000000e+00	0.000000e+00	 # molecule nr 8
+Ion_Type2_2	8.532785963	4.158586027	3.535886037	0	1.000000e-01	0.000000e+00	0.000000e+00	 # molecule nr 9
+Ion_Type2_3	7.283585982	3.275186040	3.535886037	0	1.000000e-01	0.000000e+00	0.000000e+00	 # molecule nr 10
+
+Ion_Type1_1	9.882085945	2.645886050	2.645886050	0	1.000000e-01	0.000000e+00	0.000000e+00	 # molecule nr 0
+Ion_Type1_2	9.882085945	2.645886050	4.425886024	0	1.000000e-01	0.000000e+00	0.000000e+00	 # molecule nr 1
+Ion_Type1_3	10.772039608	3.904536878	3.535886037	0	1.000000e-01	0.000000e+00	0.000000e+00	 # molecule nr 2
+Ion_Type1_4	8.632785963	4.787886018	2.645886050	0	1.000000e-01	0.000000e+00	0.000000e+00	 # molecule nr 3
+Ion_Type1_5	8.632785963	4.787886018	4.425886024	0	1.000000e-01	0.000000e+00	0.000000e+00	 # molecule nr 4
+Ion_Type1_6	6.493632318	3.904536877	3.535886037	0	1.000000e-01	0.000000e+00	0.000000e+00	 # molecule nr 5
+Ion_Type1_7	7.383585982	2.645886050	2.645886050	0	1.000000e-01	0.000000e+00	0.000000e+00	 # molecule nr 6
+Ion_Type1_8	7.383585982	2.645886050	4.425886024	0	1.000000e-01	0.000000e+00	0.000000e+00	 # molecule nr 7
+Ion_Type2_1	9.882085945	3.275186040	3.535886037	0	1.000000e-01	0.000000e+00	0.000000e+00	 # molecule nr 8
+Ion_Type2_2	8.632785963	4.158586027	3.535886037	0	1.000000e-01	0.000000e+00	0.000000e+00	 # molecule nr 9
+Ion_Type2_3	7.383585982	3.275186040	3.535886037	0	1.000000e-01	0.000000e+00	0.000000e+00	 # molecule nr 10
+
+Ion_Type1_1	9.982085945	2.645886050	2.645886050	0 # molecule nr 0
+Ion_Type1_2	9.982085945	2.645886050	4.425886024	0 # molecule nr 1
+Ion_Type1_3	10.872039608	3.904536878	3.535886037	0 # molecule nr 2
+Ion_Type1_4	8.732785963	4.787886018	2.645886050	0 # molecule nr 3
+Ion_Type1_5	8.732785963	4.787886018	4.425886024	0 # molecule nr 4
+Ion_Type1_6	6.593632318	3.904536877	3.535886037	0 # molecule nr 5
+Ion_Type1_7	7.483585982	2.645886050	2.645886050	0 # molecule nr 6
+Ion_Type1_8	7.483585982	2.645886050	4.425886024	0 # molecule nr 7
+Ion_Type2_1	9.982085945	3.275186040	3.535886037	0 # molecule nr 8
+Ion_Type2_2	8.732785963	4.158586027	3.535886037	0 # molecule nr 9
+Ion_Type2_3	7.483585982	3.275186040	3.535886037	0 # molecule nr 10
+
+Ion_Type1_1	9.982085945	2.645886050	2.645886050	0 # molecule nr 0
+Ion_Type1_2	9.982085945	2.645886050	4.425886024	0 # molecule nr 1
+Ion_Type1_3	10.872039608	3.904536878	3.535886037	0 # molecule nr 2
+Ion_Type1_4	8.732785963	4.787886018	2.645886050	0 # molecule nr 3
+Ion_Type1_5	8.732785963	4.787886018	4.425886024	0 # molecule nr 4
+Ion_Type1_6	6.593632318	3.904536877	3.535886037	0 # molecule nr 5
+Ion_Type1_7	7.483585982	2.645886050	2.645886050	0 # molecule nr 6
+Ion_Type1_8	7.483585982	2.645886050	4.425886024	0 # molecule nr 7
+Ion_Type2_1	9.982085945	3.275186040	3.535886037	0 # molecule nr 8
+Ion_Type2_2	8.732785963	4.158586027	3.535886037	0 # molecule nr 9
+Ion_Type2_3	7.483585982	3.275186040	3.535886037	0 # molecule nr 10
Index: tests/regression/Parser/Pcp/pre/testmulti.conf
===================================================================
--- tests/regression/Parser/Pcp/pre/testmulti.conf	(revision fcac720d9b6b26c107f65986d20e213556f266e5)
+++ tests/regression/Parser/Pcp/pre/testmulti.conf	(revision fcac720d9b6b26c107f65986d20e213556f266e5)
@@ -0,0 +1,119 @@
+# ParallelCarParinello - main configuration file - created with molecuilder
+
+mainname	pcp	# programm name (for runtime files)
+defaultpath	not specified	# where to put files during runtime
+pseudopotpath	not specified	# where to find pseudopotentials
+
+ProcPEGamma	8	# for parallel computing: share constants
+ProcPEPsi	1	# for parallel computing: share wave functions
+DoOutVis	0	# Output data for OpenDX
+DoOutMes	1	# Output data for measurements
+DoOutOrbitals	0	# Output all Orbitals
+DoOutCurr	0	# Ouput current density for OpenDx
+DoOutNICS	0	# Output Nucleus independent current shieldings
+DoPerturbation	0	# Do perturbation calculate and determine susceptibility and shielding
+DoFullCurrent	0	# Do full perturbation
+DoConstrainedMD	0	# Do perform a constrained (>0, relating to current MD step) instead of unconstrained (0) MD
+Thermostat	Berendsen	2.5	# Which Thermostat and its parameters to use in MD case.
+CommonWannier	0	# Put virtual centers at indivual orbits, all common, merged by variance, to grid point, to cell center
+SawtoothStart	0.01	# Absolute value for smooth transition at cell border 
+VectorPlane	0	# Cut plane axis (x, y or z: 0,1,2) for two-dim current vector plot
+VectorCut	0	# Cut plane axis value
+AddGramSch	1	# Additional GramSchmidtOrtogonalization to be safe
+Seed		1	# initial value for random seed for Psi coefficients
+
+MaxOuterStep	0	# number of MolecularDynamics/Structure optimization steps
+Deltat	0.01	# time per MD step
+OutVisStep	10	# Output visual data every ...th step
+OutSrcStep	5	# Output "restart" data every ..th step
+TargetTemp	0.000950045	# Target temperature
+MaxPsiStep	0	# number of Minimisation steps per state (0 - default)
+EpsWannier	1e-07	# tolerance value for spread minimisation of orbitals
+
+# Values specifying when to stop
+MaxMinStep	100	# Maximum number of steps
+RelEpsTotalE	1e-07	# relative change in total energy
+RelEpsKineticE	1e-05	# relative change in kinetic energy
+MaxMinStopStep	0	# check every ..th steps
+MaxMinGapStopStep	0	# check every ..th steps
+
+# Values specifying when to stop for INIT, otherwise same as above
+MaxInitMinStep	100	# Maximum number of steps
+InitRelEpsTotalE	1e-05	# relative change in total energy
+InitRelEpsKineticE	0.0001	# relative change in kinetic energy
+InitMaxMinStopStep	0	# check every ..th steps
+InitMaxMinGapStopStep	0	# check every ..th steps
+
+BoxLength			# (Length of a unit cell)
+20	
+0	20	
+0	0	20	
+
+ECut		128	# energy cutoff for discretization in Hartrees
+MaxLevel	5	# number of different levels in the code, >=2
+Level0Factor	2	# factor by which node number increases from S to 0 level
+RiemannTensor	0	# (Use metric)
+PsiType		0	# 0 - doubly occupied, 1 - SpinUp,SpinDown
+MaxPsiDouble	0	# here: specifying both maximum number of SpinUp- and -Down-states
+PsiMaxNoUp	0	# here: specifying maximum number of SpinUp-states
+PsiMaxNoDown	0	# here: specifying maximum number of SpinDown-states
+AddPsis		0	# Additional unoccupied Psis for bandgap determination
+
+RCut		20	# R-cut for the ewald summation
+StructOpt	0	# Do structure optimization beforehand
+IsAngstroem	1	# 0 - Bohr, 1 - Angstroem
+RelativeCoord	0	# whether ion coordinates are relative (1) or absolute (0)
+MaxTypes	2	# maximum number of different ion types
+
+# Ion type data (PP = PseudoPotential, Z = atomic number)
+#Ion_TypeNr.	Amount	Z	RGauss	L_Max(PP)L_Loc(PP)IonMass	# chemical name, symbol
+Ion_Type1	8	1	1.0	3	3	1.00800000000	Hydrogen	H
+Ion_Type2	3	6	1.0	3	3	12.01100000000	Carbon	C
+#Ion_TypeNr._Nr.R[0]    R[1]    R[2]    MoveType (0 MoveIon, 1 FixedIon)
+Ion_Type2_1	9.782085945	3.275186040	3.535886037	0 0.1 0. 0.
+Ion_Type2_2	8.532785963	4.158586027	3.535886037	0 0.1 0. 0.
+Ion_Type2_3	7.283585982	3.275186040	3.535886037	0 0.1 0. 0.
+Ion_Type1_1	9.782085945	2.645886050	2.645886050	0 0.1 0. 0.
+Ion_Type1_2	9.782085945	2.645886050	4.425886024	0 0.1 0. 0.
+Ion_Type1_3	10.672039608	3.904536878	3.535886037	0 0.1 0. 0.
+Ion_Type1_4	8.532785963	4.787886018	2.645886050	0 0.1 0. 0.
+Ion_Type1_5	8.532785963	4.787886018	4.425886024	0 0.1 0. 0.
+Ion_Type1_6	6.393632318	3.904536877	3.535886037	0 0.1 0. 0.
+Ion_Type1_7	7.283585982	2.645886050	2.645886050	0 0.1 0. 0.
+Ion_Type1_8	7.283585982	2.645886050	4.425886024	0 0.1 0. 0.
+
+Ion_Type2_1	9.882085945	3.275186040	3.535886037	0 0.1 0. 0.
+Ion_Type2_2	8.632785963	4.158586027	3.535886037	0 0.1 0. 0.
+Ion_Type2_3	7.383585982	3.275186040	3.535886037	0 0.1 0. 0.
+Ion_Type1_1	9.882085945	2.645886050	2.645886050	0 0.1 0. 0.
+Ion_Type1_2	9.882085945	2.645886050	4.425886024	0 0.1 0. 0.
+Ion_Type1_3	10.772039608	3.904536878	3.535886037	0 0.1 0. 0.
+Ion_Type1_4	8.632785963	4.787886018	2.645886050	0 0.1 0. 0.
+Ion_Type1_5	8.632785963	4.787886018	4.425886024	0 0.1 0. 0.
+Ion_Type1_6	6.493632318	3.904536877	3.535886037	0 0.1 0. 0.
+Ion_Type1_7	7.383585982	2.645886050	2.645886050	0 0.1 0. 0.
+Ion_Type1_8	7.383585982	2.645886050	4.425886024	0 0.1 0. 0.
+
+Ion_Type2_1	9.982085945	3.275186040	3.535886037	0 0. 0. 0.
+Ion_Type2_2	8.732785963	4.158586027	3.535886037	0 0. 0. 0.
+Ion_Type2_3	7.483585982	3.275186040	3.535886037	0 0. 0. 0.
+Ion_Type1_1	9.982085945	2.645886050	2.645886050	0 0. 0. 0.
+Ion_Type1_2	9.982085945	2.645886050	4.425886024	0 0. 0. 0.
+Ion_Type1_3	10.872039608	3.904536878	3.535886037	0 0. 0. 0.
+Ion_Type1_4	8.732785963	4.787886018	2.645886050	0 0. 0. 0.
+Ion_Type1_5	8.732785963	4.787886018	4.425886024	0 0. 0. 0.
+Ion_Type1_6	6.593632318	3.904536877	3.535886037	0 0. 0. 0.
+Ion_Type1_7	7.483585982	2.645886050	2.645886050	0 0. 0. 0.
+Ion_Type1_8	7.483585982	2.645886050	4.425886024	0 0. 0. 0.
+
+Ion_Type2_1	9.982085945	3.275186040	3.535886037	0 0. 0. 0.
+Ion_Type2_2	8.732785963	4.158586027	3.535886037	0 0. 0. 0.
+Ion_Type2_3	7.483585982	3.275186040	3.535886037	0 0. 0. 0.
+Ion_Type1_1	9.982085945	2.645886050	2.645886050	0 0. 0. 0.
+Ion_Type1_2	9.982085945	2.645886050	4.425886024	0 0. 0. 0.
+Ion_Type1_3	10.872039608	3.904536878	3.535886037	0 0. 0. 0.
+Ion_Type1_4	8.732785963	4.787886018	2.645886050	0 0. 0. 0.
+Ion_Type1_5	8.732785963	4.787886018	4.425886024	0 0. 0. 0.
+Ion_Type1_6	6.593632318	3.904536877	3.535886037	0 0. 0. 0.
+Ion_Type1_7	7.483585982	2.645886050	2.645886050	0 0. 0. 0.
+Ion_Type1_8	7.483585982	2.645886050	4.425886024	0 0. 0. 0.
Index: tests/regression/Parser/Pcp/testsuite-parser-pcp.at
===================================================================
--- tests/regression/Parser/Pcp/testsuite-parser-pcp.at	(revision 6a465e4248cc6569f489730a4176224357fc5126)
+++ tests/regression/Parser/Pcp/testsuite-parser-pcp.at	(revision fcac720d9b6b26c107f65986d20e213556f266e5)
@@ -12,2 +12,8 @@
 AT_CHECK([diff store.conf ${abs_top_srcdir}/${AUTOTEST_PATH}/Parser/Pcp/post/test.conf], 0, [ignore], [ignore])
 AT_CLEANUP
+
+AT_SETUP([Parser - loading with multiple time steps])
+AT_KEYWORDS([parser,pcp])
+AT_CHECK([../../molecuilder -i testmulti.conf -o pcp -l ${abs_top_srcdir}/${AUTOTEST_PATH}/Parser/Pcp/pre/testmulti.conf], 0, [ignore], [ignore])
+AT_CHECK([file=testmulti.conf; diff $file ${abs_top_srcdir}/${AUTOTEST_PATH}/Parser/Pcp/post/$file], 0, [ignore], [ignore])
+AT_CLEANUP
