diff --git a/meldata.cc b/meldata.cc
index 6d6fd082b305be2084b8688be173c7cb2f02cf66..0dc130db0e1665da769bb33fa145bacb425eb82f 100644
--- a/meldata.cc
+++ b/meldata.cc
@@ -209,7 +209,10 @@ namespace Melodic{
     	tmpData = process_file(opts.inputfname.value().at(ctr), numfiles);
 			if(opts.debug.value())
 				save4D(tmpData /numfiles,string("preproc_dat") + num2str(ctr+1));
-      alldat += tmpData / numfiles;
+			if(tmpData.Ncols() == alldat.Ncols() && tmpData.Nrows() == alldat.Nrows())
+      	alldat += tmpData / numfiles;	
+			else
+				message("Data dimensions do not match - ignoring "+opts.inputfname.value().at(ctr) << endl);
     }
 
     //update mask
diff --git a/melica.cc b/melica.cc
index d264066e075e05059b8aa421d1e3727909c5348d..b5d9b7c8e02105fd7c9553c9c65fd545aafa5281 100644
--- a/melica.cc
+++ b/melica.cc
@@ -114,13 +114,13 @@ namespace Melodic{
 	  		Matrix temp(melodat.get_dewhite() * redUMM);
 	  		temp = melodat.expand_dimred(temp);
 			  temp = krapprox(temp,int(temp.Nrows()/melodat.get_numfiles())); 
-				minAbsSin2 = 1 - diag(corrcoef(temp,rank1_old)).Minimum();
+				minAbsSin2 = 1 - diag(abs(corrcoef(temp,rank1_old))).Minimum();
 				rank1_old = temp;
 				temp = melodat.reduce_dimred(temp);
 				redUMM = melodat.get_white() * temp;
 
 				message(" change : " << abs(minAbsSin2) << endl);	
-				if(abs(minAbsSin2) < 0.01 && abs(minAbsSin) < opts.epsilon.value()){ break;}
+				if(abs(minAbsSin2) < opts.epsilonS.value() && abs(minAbsSin) < opts.epsilon.value()){ break;}
 			}
     } while(
       (itt_ctr2 < newmaxitts/opts.maxNumItt.value()) && 
diff --git a/meloptions.h b/meloptions.h
index a49c9e17c760ed533b15deefc8b19d249618fa59..bc9cda62dd159dfe4e78c2399120aa9b6bc174fb 100644
--- a/meloptions.h
+++ b/meloptions.h
@@ -65,6 +65,7 @@ class MelodicOptions {
   	Option<string> segment;
   	Option<bool>   tsmooth;
   	Option<float>  epsilon;
+  	Option<float>  epsilonS;
   	Option<int>    maxNumItt;
   	Option<int>    maxRestart;
   	Option<int>    rank1interval;
@@ -212,6 +213,9 @@ class MelodicOptions {
    epsilon(string("--eps,--epsilon"), 0.0005,
 	   string("minimum error change"), 
 	   false, requires_argument),
+ 	 epsilonS(string("--epsS,--epsilonS"), 0.03,
+		   string("minimum error change for rank-1 approximation in TICA"), 
+		   false, requires_argument),
    maxNumItt(string("--maxit"),  500,
 	   string("\tmaximum number of iterations before restart"), 
 	   false, requires_argument),
@@ -376,6 +380,7 @@ class MelodicOptions {
 	    options.add(segment);
 	    options.add(tsmooth);
 	    options.add(epsilon);
+	    options.add(epsilonS);
 	    options.add(maxNumItt);
 	    options.add(maxRestart);
 	    options.add(rank1interval);