diff --git a/meldata.cc b/meldata.cc
index 207ede2d00adc5313c2beaa208e38c03b076ed5a..7810c183c9bc02e3ace4cfac81cd24200e5fea71 100644
--- a/meldata.cc
+++ b/meldata.cc
@@ -139,10 +139,13 @@ namespace Melodic{
   void MelodicData::set_TSmode()
   {
 	Matrix tmp, tmpT, tmpS, tmpT2, tmpS2, tmpT3;
+	
     tmp = expand_dimred(mixMatrix);
     tmpT = zeros(tmp.Nrows()/numfiles, tmp.Ncols());
     tmpS = zeros(numfiles, tmp.Ncols());
-    explained_var = krfact(tmp,tmpT,tmpS);
+
+	if(opts.approach.value()==string("tica")){
+    	explained_var = krfact(tmp,tmpT,tmpS);
 		outMsize("tmp",tmp);
 		outMsize("tmpT",tmpT);
 		outMsize("tmpS",tmpS);
@@ -164,7 +167,7 @@ namespace Melodic{
       			add_Smodes(tmpS2);
     		}
 	//	}
-		
+	
 	//add GLM OLS fit
 	if(Tdes.Storage()){
 		Matrix alltcs = Tmodes.at(0).Column(1);
@@ -180,6 +183,14 @@ namespace Melodic{
 		if((alltcs.Nrows()==Sdes.Nrows())&&(Sdes.Nrows()>Sdes.Ncols()&&alltcs.Nrows()>2))
 			glmS.olsfit(alltcs,Sdes,Scon);
 	}
+	
+    }
+//	else{
+//		add_Tmodes(tmp);
+//	}
+	
+	dbgmsg(string("END: set_TSmode"));
+    
   }
 
   void MelodicData::setup()
diff --git a/meldata.h b/meldata.h
index 8d579bbbd7c8915ef661be63c855024efbece788..c4e04602b4ad0c94b5ce8d01b1860d4ee018ff25 100644
--- a/meldata.h
+++ b/meldata.h
@@ -76,20 +76,24 @@ namespace Melodic{
       inline Matrix& get_Smodes(int what) {return Smodes.at(what);}
       inline void add_Smodes(Matrix& Arg) {Smodes.push_back(Arg);}      
       inline void save_Smodes(){
+			if(Smodes.size()>0){
 				Matrix tmp = Smodes.at(0); 
 				for(unsigned int ctr = 1; ctr < Smodes.size(); ctr++)
 	  			tmp |= Smodes.at(ctr);
 				  saveascii(tmp,opts.outputfname.value() + "_Smodes");
+			}
       }
 
       inline vector<Matrix>& get_Tmodes() {return Tmodes;}
       inline Matrix& get_Tmodes(int what) {return Tmodes.at(what);}
       inline void add_Tmodes(Matrix& Arg) {Tmodes.push_back(Arg);}
       inline void save_Tmodes(){
+			if(Tmodes.size()>0){
 				Matrix tmp = Tmodes.at(0); 
 				for(unsigned int ctr = 1; ctr < Tmodes.size(); ctr++)
 	  			tmp |= Tmodes.at(ctr);
 				saveascii(tmp,opts.outputfname.value() + "_Tmodes");
+			}
       }
 
       void set_TSmode();
diff --git a/melodic.cc b/melodic.cc
index bfa713a4661ceb90e9bd5dc12cd0550cba4a2e6b..b78b5ff644485c5b39ee7d22ad68292c7656c55a 100644
--- a/melodic.cc
+++ b/melodic.cc
@@ -331,9 +331,9 @@ Matrix mmall(Log& logger, MelodicOptions& opts,MelodicData& melodat, MelodicRepo
       message("   saving probability map:  ");
       melodat.save4D(mixmod.get_probmap(),
 		     string("stats/probmap_")+num2str(ctr));
-%%	  message("   saving mixture model fit:");
-%%	  melodat.saveascii(mixmod.get_params(),
-%%			 string("stats/MMstats_")+num2str(ctr));  
+	  message("   saving mixture model fit:");
+	  melodat.saveascii(mixmod.get_params(),
+			 string("stats/MMstats_")+num2str(ctr));  
     }
 
     //re-scale spatial maps to mean 0 for nht
diff --git a/melreport.cc b/melreport.cc
index abe803a612322801bfc397835ed55680ae4833e6..a1bc2f640c05fcb56e277a05b11231c2d3d73ae6 100644
--- a/melreport.cc
+++ b/melreport.cc
@@ -770,6 +770,7 @@ namespace Melodic{
   }
 	
 	void MelodicReport::Smode_rep(){
+	  if(melodat.get_Smodes().size()>0){
 		report << "<p><hr><b>TICA Subject/Session modes </b> <br>" << endl;
 		miscplot newplot;
 		report << "Boxplots show the relative response amplitudes across the "
@@ -789,5 +790,6 @@ namespace Melodic{
 		newplot.boxplot(allmodes,report.appendDir(string("bp_Smodes.png")),
   			string("Subject/Session modes"));
   		report << "<img BORDER=0 SRC=\"bp_Smodes.png\"><p>" << endl;
+      }
 	}
 }