diff --git a/CHANGES b/CHANGES
--- a/CHANGES
+++ b/CHANGES
@@ -76,3 +76,7 @@
 
 0.3:
 		Added vectors of samples
+
+0.3.0.1:
+		fixed int declaration for for loops
+		fixed up some C errors in distribution-aux.c
diff --git a/hmatrix-gsl-stats.cabal b/hmatrix-gsl-stats.cabal
--- a/hmatrix-gsl-stats.cabal
+++ b/hmatrix-gsl-stats.cabal
@@ -1,5 +1,5 @@
 Name:               hmatrix-gsl-stats
-Version:            0.3
+Version:            0.3.0.1
 License:            BSD3
 License-file:       LICENSE
 Copyright:          (c) A.V.H. McPhail 2010, 2011, 2013, 2015
diff --git a/lib/Numeric/GSL/distribution-aux.c b/lib/Numeric/GSL/distribution-aux.c
--- a/lib/Numeric/GSL/distribution-aux.c
+++ b/lib/Numeric/GSL/distribution-aux.c
@@ -31,8 +31,10 @@
   rng = gsl_rng_alloc(T);
   gsl_rng_set(rng,s);
 
+  int i;
+
   switch(type) {
-  case 0: { for (int i = 0; i < rs; i ++) r[i] = gsl_ran_landau(rng); break; }
+  case 0: { for (i = 0; i < rs; i ++) r[i] = gsl_ran_landau(rng); break; }
   }
 
   gsl_rng_free(rng);
@@ -92,15 +94,17 @@
   rng = gsl_rng_alloc(T);
   gsl_rng_set(rng,s);
 
+  int i;
+
   switch(type) {
-  case 0: { for (int i = 0; i < rs; i ++) r[i] = gsl_ran_gaussian(rng,par); break; }
-  case 1: { for (int i = 0; i < rs; i ++) r[i] = gsl_ran_exponential(rng,par); break; }
-  case 2: { for (int i = 0; i < rs; i ++) r[i] = gsl_ran_laplace(rng,par); break; }
-  case 3: { for (int i = 0; i < rs; i ++) r[i] = gsl_ran_cauchy(rng,par); break; }
-  case 4: { for (int i = 0; i < rs; i ++) r[i] = gsl_ran_rayleigh(rng,par); break; }
-  case 5: { for (int i = 0; i < rs; i ++) r[i] = gsl_ran_chisq(rng,par); break; }
-  case 6: { for (int i = 0; i < rs; i ++) r[i] = gsl_ran_tdist(rng,par); break; }
-  case 7: { for (int i = 0; i < rs; i ++) r[i] = gsl_ran_logistic(rng,par); break; }
+  case 0: { for (i = 0; i < rs; i ++) r[i] = gsl_ran_gaussian(rng,par); break; }
+  case 1: { for (i = 0; i < rs; i ++) r[i] = gsl_ran_exponential(rng,par); break; }
+  case 2: { for (i = 0; i < rs; i ++) r[i] = gsl_ran_laplace(rng,par); break; }
+  case 3: { for (i = 0; i < rs; i ++) r[i] = gsl_ran_cauchy(rng,par); break; }
+  case 4: { for (i = 0; i < rs; i ++) r[i] = gsl_ran_rayleigh(rng,par); break; }
+  case 5: { for (i = 0; i < rs; i ++) r[i] = gsl_ran_chisq(rng,par); break; }
+  case 6: { for (i = 0; i < rs; i ++) r[i] = gsl_ran_tdist(rng,par); break; }
+  case 7: { for (i = 0; i < rs; i ++) r[i] = gsl_ran_logistic(rng,par); break; }
   }
 
   gsl_rng_free(rng);
@@ -232,20 +236,22 @@
   rng = gsl_rng_alloc(T);
   gsl_rng_set(rng,s);
 
+  int i;
+
   switch(type) {
-  case 0: { for (int i = 0; i < rs; i ++) r[i] (*r) = gsl_ran_gaussian_tail(rng,par1,par2); break; }
-  case 1: { for (int i = 0; i < rs; i ++) r[i] = gsl_ran_exppow(rng,par1,par2); break; }
-  case 2: { for (int i = 0; i < rs; i ++) r[i] = gsl_ran_rayleigh_tail(rng,par1,par2); break; }
-  case 3: { for (int i = 0; i < rs; i ++) r[i] = gsl_ran_levy(rng,par1,par2); break; }
-  case 4: { for (int i = 0; i < rs; i ++) r[i] = gsl_ran_gamma(rng,par1,par2); break; }
-  case 5: { for (int i = 0; i < rs; i ++) r[i] = gsl_ran_flat(rng,par1,par2); break; }
-  case 6: { for (int i = 0; i < rs; i ++) r[i] = gsl_ran_lognormal(rng,par1,par2); break; }
-  case 7: { for (int i = 0; i < rs; i ++) r[i] = gsl_ran_fdist(rng,par1,par2); break; }
-  case 8: { for (int i = 0; i < rs; i ++) r[i] = gsl_ran_beta(rng,par1,par2); break; }
-  case 9: { for (int i = 0; i < rs; i ++) r[i] = gsl_ran_pareto(rng,par1,par2); break; }
-  case 10: { for (int i = 0; i < rs; i ++) r[i] = gsl_ran_weibull(rng,par1,par2); break; }
-  case 11: { for (int i = 0; i < rs; i ++) r[i] = gsl_ran_gumbel1(rng,par1,par2); break; }
-  case 12: { for (int i = 0; i < rs; i ++) r[i] = gsl_ran_gumbel2(rng,par1,par2); break; }
+  case 0: { for (i = 0; i < rs; i ++) r[i] = gsl_ran_gaussian_tail(rng,par1,par2); break; }
+  case 1: { for (i = 0; i < rs; i ++) r[i] = gsl_ran_exppow(rng,par1,par2); break; }
+  case 2: { for (i = 0; i < rs; i ++) r[i] = gsl_ran_rayleigh_tail(rng,par1,par2); break; }
+  case 3: { for (i = 0; i < rs; i ++) r[i] = gsl_ran_levy(rng,par1,par2); break; }
+  case 4: { for (i = 0; i < rs; i ++) r[i] = gsl_ran_gamma(rng,par1,par2); break; }
+  case 5: { for (i = 0; i < rs; i ++) r[i] = gsl_ran_flat(rng,par1,par2); break; }
+  case 6: { for (i = 0; i < rs; i ++) r[i] = gsl_ran_lognormal(rng,par1,par2); break; }
+  case 7: { for (i = 0; i < rs; i ++) r[i] = gsl_ran_fdist(rng,par1,par2); break; }
+  case 8: { for (i = 0; i < rs; i ++) r[i] = gsl_ran_beta(rng,par1,par2); break; }
+  case 9: { for (i = 0; i < rs; i ++) r[i] = gsl_ran_pareto(rng,par1,par2); break; }
+  case 10: { for (i = 0; i < rs; i ++) r[i] = gsl_ran_weibull(rng,par1,par2); break; }
+  case 11: { for (i = 0; i < rs; i ++) r[i] = gsl_ran_gumbel1(rng,par1,par2); break; }
+  case 12: { for (i = 0; i < rs; i ++) r[i] = gsl_ran_gumbel2(rng,par1,par2); break; }
   }
 
   gsl_rng_free(rng);
@@ -375,8 +381,10 @@
   rng = gsl_rng_alloc(T);
   gsl_rng_set(rng,s);
 
+  int i;
+
   switch(type) {
-  case 0: { for (int i = 0; i < rs; i ++) r[i] = gsl_ran_levy_skew(rng,par1,par2,par3); break; }
+  case 0: { for (i = 0; i < rs; i ++) r[i] = gsl_ran_levy_skew(rng,par1,par2,par3); break; }
   }
 
   gsl_rng_free(rng);
@@ -384,8 +392,6 @@
   return 0;
 }
 
-for (int i = 0; i < rs; i ++) r[i] 
-
 double random3_pdf(int type, double x, double par1, double par2, double par3)
 {
   switch (type) {
@@ -455,6 +461,8 @@
 
 int random_biv_v(int s, int type, double par1, double par2, double par3, int rs1, double* r1, int rs2, double* r2)
 {
+  if (rs1 != rs2) return 2000; // BAD_SIZE
+
   const gsl_rng_type * T;
   gsl_rng * rng;
 
@@ -463,8 +471,10 @@
   rng = gsl_rng_alloc(T);
   gsl_rng_set(rng,s);
 
+  int i;
+
   switch(type) {
-  case 0: { for (int i = 0; i < rs; i ++) gsl_ran_bivariate_gaussian(rng,par1,par2,par3,r1[i],r2[i]); break; }
+  case 0: { for (i = 0; i < rs1; i++) gsl_ran_bivariate_gaussian(rng,par1,par2,par3,&r1[i],&r2[i]); break; }
   }
 
   gsl_rng_free(rng);
@@ -642,11 +652,13 @@
   rng = gsl_rng_alloc(T);
   gsl_rng_set(rng,s);
 
+  int i;
+
   switch(type) {
-  case 0: { for (int i = 0; i < rs; i ++) r[i] = gsl_ran_poisson(rng,par); break; }
-  case 1: { for (int i = 0; i < rs; i ++) r[i] = gsl_ran_bernoulli(rng,par); break; }
-  case 2: { for (int i = 0; i < rs; i ++) r[i] = gsl_ran_laplace(rng,par); break; }
-  case 3: { for (int i = 0; i < rs; i ++) r[i] = gsl_ran_logarithmic(rng,par); break; }
+  case 0: { for (i = 0; i < rs; i ++) r[i] = gsl_ran_poisson(rng,par); break; }
+  case 1: { for (i = 0; i < rs; i ++) r[i] = gsl_ran_bernoulli(rng,par); break; }
+  case 2: { for (i = 0; i < rs; i ++) r[i] = gsl_ran_laplace(rng,par); break; }
+  case 3: { for (i = 0; i < rs; i ++) r[i] = gsl_ran_logarithmic(rng,par); break; }
   }
 
   gsl_rng_free(rng);
@@ -654,8 +666,6 @@
   return 0;
 }
 
-for (int i = 0; i < rs; i ++) r[i]
-
 double discrete1_pdf(int type, unsigned int x, double par)
 {
   switch (type) {
@@ -730,7 +740,7 @@
   return 0;
 }
 
-int discrete2(int s, int type, double par1, unsigned int par2, int rs, unsigned int* r)
+int discrete2_v(int s, int type, double par1, unsigned int par2, int rs, unsigned int* r)
 {
   const gsl_rng_type * T;
   gsl_rng * rng;
@@ -740,17 +750,19 @@
   rng = gsl_rng_alloc(T);
   gsl_rng_set(rng,s);
 
+  int i;
+
   switch(type) {
-  case 0: { for (int i = 0; i < rs; i ++) r[i] = gsl_ran_binomial(rng,par1,par2); break; }
-  case 1: { for (int i = 0; i < rs; i ++) r[i] = gsl_ran_negative_binomial(rng,par1,par2*1.0); break; }
-  case 2: { for (int i = 0; i < rs; i ++) r[i] = gsl_ran_pascal(rng,par1,par2); break; }
+  case 0: { for (i = 0; i < rs; i ++) r[i] = gsl_ran_binomial(rng,par1,par2); break; }
+  case 1: { for (i = 0; i < rs; i ++) r[i] = gsl_ran_negative_binomial(rng,par1,par2*1.0); break; }
+  case 2: { for (i = 0; i < rs; i ++) r[i] = gsl_ran_pascal(rng,par1,par2); break; }
   }
 
   gsl_rng_free(rng);
 
   return 0;
 }
-for (int i = 0; i < rs; i ++) r[i] 
+
 double discrete2_pdf(int type, unsigned int x, double par1, unsigned int par2)
 {
   switch (type) {
@@ -824,7 +836,7 @@
   return 0;
 }
 
-int discrete3(int s, int type, unsigned int par1, unsigned int par2, int rs, unsigned int par3, double* r)
+int discrete3_v(int s, int type, unsigned int par1, unsigned int par2, unsigned int par3, int rs, double* r)
 {
   const gsl_rng_type * T;
   gsl_rng * rng;
@@ -834,15 +846,17 @@
   rng = gsl_rng_alloc(T);
   gsl_rng_set(rng,s);
 
+  int i;
+
   switch(type) {
-  case 0: { for (int i = 0; i < rs; i ++) r[i] = gsl_ran_hypergeometric(rng,par1,par2,par3); break; }
+  case 0: { for (i = 0; i < rs; i ++) r[i] = gsl_ran_hypergeometric(rng,par1,par2,par3); break; }
   }
 
   gsl_rng_free(rng);
 
   return 0;
 }
-for (int i = 0; i < rs; i ++) r[i] 
+
 double discrete3_pdf(int type, double x, unsigned int par1, unsigned int par2, unsigned int par3)
 {
   switch (type) {
