diff --git a/src/rssm.cpp b/src/rssm.cpp
index a35ac17e63cc7e70b70d07d0f05f5ef5863b8b00..5b8936c921756d18f5a3c4a61ce07f4e7f5fdd40 100644
--- a/src/rssm.cpp
+++ b/src/rssm.cpp
@@ -616,7 +616,7 @@ void NRSSM::ReadSeries( int format, int flag )
 
 {
     char tstrg[30];
-    string fser, name;
+    string fser, fnam, name;
     time_t t;
     int ret, isub;
     vector<RssmRawFile> RR;
@@ -624,41 +624,43 @@ void NRSSM::ReadSeries( int format, int flag )
     // Read consolidated files:
     fser = wask("Read SPHERES data from series");
     for( isub=0; ; ++isub ){
-        RR.push_back( RssmRawFile() );
         if       ( format==2 ) {
-            ret = RR.back().RdRawXml( fser+"c"+strg(isub) );
+            RR.push_back( RssmRawFile() );
+            fnam = fser+"a"+strg(isub);
+            ret = RR.back().RdRawXml( fnam );
             if( ret==1 ){
                 printf( "ignore the above warning\n" );
                 RR.pop_back();
                 break;
             }
         } else if( format==5 ) {
-            string fnam = fser+"a"+strg(isub);
+            fnam = fser+"a"+strg(isub);
             FILE *F_in;
             if( !(F_in = fopen( fnam.c_str(), "r" ) ) )
                 break;
+            // cout << "successfully opened "<<fnam<<"\n";
             try{ 
-                RR.back().RdRawYam( F_in );
+                RssmRawFile rf;
+                rf.RdRawYam( F_in );
+                RR.push_back( rf );
             }
             catch(exception& e) {
                 cerr << e.what() << endl;
                 if (F_in) fclose(F_in);
                 return;
             }
+            ret = 0;
         } else {
-            printf( "invalid format" );
-            return;
+            throw string( "invalid format parameter" );
         } 
         if ( ret )
             return;
     }
     int nsub = RR.size();
     if( nsub==0 )
-        return;
-    else if( nsub==1 ){
-        printf( "series contains just one scan -> use a simpler method\n" );
-        return;
-    }
+        throw string( "could not open file " ) + fnam;
+    else if( nsub==1 )
+        throw string( "series contains just one scan -> use a simpler method");
     printf( "successfully read %d files\n", nsub );
 
     // Correct time:
@@ -679,12 +681,14 @@ void NRSSM::ReadSeries( int format, int flag )
     bool incremental_in = RR[0].incremental;
 
     for( isub=1; isub<nsub; ++isub ){
-        if( RR[isub].angles.size()!=ndet ||
-            RR[isub].daq_time_step!=tstep ||
-            RR[isub].incremental!=incremental_in ){
-            printf( "SEVERE essential parameters are inconsistent\n" );
-            return;
-        }
+        if( RR[isub].angles.size()!=ndet )
+            throw string( "inconsistent no of det: file " ) + strg(isub)
+                + " has " + strg(RR[isub].angles.size()) + " instead of "
+                + strg(ndet);
+        if( RR[isub].daq_time_step!=tstep )
+            throw string( "inconsistent time step" );
+        if( RR[isub].incremental!=incremental_in )
+            throw string( "inconsistent increment status" );
     }
 
     // Set file headers: