diff --git a/tractvolsx.h b/tractvolsx.h
index 51a45b42d6792b024bb749de1ce3dde33820a036..6af433bbc6f9bc7dff8590898ade05a22c253905 100644
--- a/tractvolsx.h
+++ b/tractvolsx.h
@@ -186,19 +186,18 @@ namespace TRACTVOLSX{
 		fibst=0;
 	      }
 	      else{
-		float fsumtmp2=0;
-		int fib=0;
-		float rtmp=(float)rand()/float(RAND_MAX);
+		float ft,fsumtmp2=0;
+		float rtmp=fsumtmp * (float)rand()/float(RAND_MAX);
 		
-		while( fsumtmp2<=rtmp){
-		  float ft=(*fsamples[fib])(int(newx),int(newy),int(newz),int(samp));
-		  if(ft>opts.fibthresh.value()){
-		    fsumtmp2+=(ft/fsumtmp); 
+		for(unsigned int fib=0;fib<thsamples.size();fib++){
+		  ft=(*fsamples[fib])(int(newx),int(newy),int(newz),int(samp));
+		  if(ft>opts.fibthresh.value())
+		    fsumtmp2 += ft;
+		  if(rtmp<=fsumtmp2){
+		    fibst=(int)fib;
+		    break;
 		  }
-		  fibst=fib;
-		  fib++;
-		}
-		
+		}		
 	      }
 	    }