diff --git a/CHANGES b/CHANGES
--- a/CHANGES
+++ b/CHANGES
@@ -116,3 +116,6 @@
 
 0.4.1.7:
 		trommler made -msse2 conditional
+
+0.4.1.8:
+		fixed segfault in some statistics functions (argument order)
diff --git a/hmatrix-gsl-stats.cabal b/hmatrix-gsl-stats.cabal
--- a/hmatrix-gsl-stats.cabal
+++ b/hmatrix-gsl-stats.cabal
@@ -1,8 +1,8 @@
 Name:               hmatrix-gsl-stats
-Version:            0.4.1.7
+Version:            0.4.1.8
 License:            BSD3
 License-file:       LICENSE
-Copyright:          (c) A.V.H. McPhail 2010, 2011, 2013, 2015, 2016
+Copyright:          (c) A.V.H. McPhail 2010, 2011, 2013, 2015, 2016, 2019
 Author:             Vivian McPhail
 Maintainer:         haskell.vivian.mcphail <at> gmail <dot> com
 Stability:          provisional
diff --git a/lib/Numeric/GSL/Histogram.hs b/lib/Numeric/GSL/Histogram.hs
--- a/lib/Numeric/GSL/Histogram.hs
+++ b/lib/Numeric/GSL/Histogram.hs
@@ -77,7 +77,6 @@
 -----------------------------------------------------------------------------
 
 data Hist
-  
 infixr 1 #
 a # b = apply a b
 {-# INLINE (#) #-}
diff --git a/lib/Numeric/GSL/statistics-aux.c b/lib/Numeric/GSL/statistics-aux.c
--- a/lib/Numeric/GSL/statistics-aux.c
+++ b/lib/Numeric/GSL/statistics-aux.c
@@ -118,49 +118,49 @@
 }
 
 
-int w_mean(int ws, const double* w, double* r, int vs, const double* v)
+int w_mean(double* r, int ws, const double* w, int vs, const double* v)
 {
   (*r) = gsl_stats_wmean(w,1,v,1,vs);
   return 0;
 }
 
-int w_variance(int ws, const double* w, double* r, int vs, const double* v)
+int w_variance(double* r, int ws, const double* w, int vs, const double* v)
 {
   (*r) = gsl_stats_wvariance(w,1,v,1,vs);
   return 0;
 }
 
-int w_variance_m(double m, int ws, const double* w, double* r, int vs, const double* v)
+int w_variance_m(double m, double* r, int ws, const double* w, int vs, const double* v)
 {
   (*r) = gsl_stats_wvariance_m(w,1,v,1,vs,m);
   return 0;
 }
 
-int w_stddev(int ws, const double* w, double* r, int vs, const double* v)
+int w_stddev(double* r, int ws, const double* w, int vs, const double* v)
 {
   (*r) = gsl_stats_wsd(w,1,v,1,vs);
   return 0;
 }
 
-int w_stddev_m(double m, int ws, const double* w, double* r, int vs, const double* v)
+int w_stddev_m(double m, double* r, int ws, const double* w, int vs, const double* v)
 {
   (*r) = gsl_stats_wsd_m(w,1,v,1,vs,m);
   return 0;
 }
 
-int w_tot_sumsq(int ws, const double* w, double* r, int vs, const double* v)
+int w_tot_sumsq(double* r, int ws, const double* w, int vs, const double* v)
 {
   (*r) = gsl_stats_wtss(w,1,v,1,vs);
   return 0;
 }
 
-int w_tot_sumsq_m(double m, int ws, const double* w, double* r, int vs, const double* v)
+int w_tot_sumsq_m(double m, double* r, int ws, const double* w, int vs, const double* v)
 {
   (*r) = gsl_stats_wtss_m(w,1,v,1,vs,m);
   return 0;
 }
 
-int w_var_with_fixed_m(double m, int ws, const double* w, double* r, int vs, const double* v)
+int w_var_with_fixed_m(double m, double* r, int ws, const double* w, int vs, const double* v)
 {
   (*r) = gsl_stats_wvariance_with_fixed_mean(w,1,v,1,vs,m);
   return 0;
@@ -190,7 +190,7 @@
   return 0;
 }  
 
-int w_skew_m_sd(double m, double sd, int ws, const double* w, double* r, int vs, const double* v)
+int w_skew_m_sd(double m, double sd, double* r, int ws, const double* w, int vs, const double* v)
 {
   (*r) = gsl_stats_wskew_m_sd(w,1,v,1,vs,m,sd);
   return 0;
@@ -202,7 +202,7 @@
   return 0;
 }  
 
-int w_kurtosis_m_sd(double m, double sd, int ws, const double* w, double* r, int vs, const double* v)
+int w_kurtosis_m_sd(double m, double sd, double* r, int ws, const double* w, int vs, const double* v)
 {
   (*r) = gsl_stats_wkurtosis_m_sd(w,1,v,1,vs,m,sd);
   return 0;
