Index: sansmodels/src/sans/models/c_models/dispersion_visitor.cpp
===================================================================
--- sansmodels/src/sans/models/c_models/dispersion_visitor.cpp	(revision eba988511d86410985b5a1c35ce70dd3968132a8)
+++ sansmodels/src/sans/models/c_models/dispersion_visitor.cpp	(revision 1d78e4bf33d7dd5aa6967f5064d35bc916a4f2ee)
@@ -27,5 +27,5 @@
     PyDict_SetItemString(dict, "npts",  Py_BuildValue("i", disp->npts));
     PyDict_SetItemString(dict, "width", Py_BuildValue("d", disp->width));
-    PyDict_SetItemString(dict, "nsigmas", Py_BuildValue("i", disp->nsigmas));
+    PyDict_SetItemString(dict, "nsigmas", Py_BuildValue("d", disp->nsigmas));
 #endif
 }
@@ -39,5 +39,5 @@
     PyDict_SetItemString(dict, "npts",  Py_BuildValue("i", disp->npts));
     PyDict_SetItemString(dict, "width", Py_BuildValue("d", disp->width));
-    PyDict_SetItemString(dict, "nsigmas", Py_BuildValue("i", disp->nsigmas));
+    PyDict_SetItemString(dict, "nsigmas", Py_BuildValue("d", disp->nsigmas));
 #endif
 }
@@ -52,5 +52,5 @@
     PyDict_SetItemString(dict, "npts",  Py_BuildValue("i", disp->npts));
     PyDict_SetItemString(dict, "width", Py_BuildValue("d", disp->width));
-    PyDict_SetItemString(dict, "nsigmas", Py_BuildValue("i", disp->nsigmas));
+    PyDict_SetItemString(dict, "nsigmas", Py_BuildValue("d", disp->nsigmas));
 #endif
 }
Index: sansmodels/src/sans/models/c_models/parameters.cpp
===================================================================
--- sansmodels/src/sans/models/c_models/parameters.cpp	(revision 0fff338fae7771543f341ade96bd3dc50613e520)
+++ sansmodels/src/sans/models/c_models/parameters.cpp	(revision 1d78e4bf33d7dd5aa6967f5064d35bc916a4f2ee)
@@ -63,5 +63,5 @@
 	} else {
 		for(int i=0; i<npts; i++) {
-			double val = value + width * (1.0*i/float(npts-1) - 0.5);
+			double val = value + width * (1.0*double(i)/double(npts-1) - 0.5);
 
 			if ( ((*par).has_min==false || val>(*par).min)
@@ -85,5 +85,5 @@
 	npts  = 21;
 	width = 0.0;
-	nsigmas = 3;
+	nsigmas = 3.0;
 };
 
@@ -115,5 +115,5 @@
 		width = 0.0;
 		npts  = 1;
-		nsigmas = 3;
+		nsigmas = 3.0;
 	}
 
@@ -126,6 +126,5 @@
 		for(int i=0; i<npts; i++) {
 			// We cover n(nsigmas) times sigmas on each side of the mean
-			double val = value + width * (2.0*nsigmas*i/float(npts-1) - nsigmas);
-
+			double val = value + width * (2.0*nsigmas*double(i)/double(npts-1) - nsigmas);
 			if ( ((*par).has_min==false || val>(*par).min)
 			  && ((*par).has_max==false || val<(*par).max)  ) {
@@ -145,5 +144,5 @@
 	npts  = 21;
 	width = 0.0;
-	nsigmas = 3;
+	nsigmas = 3.0;
 };
 
@@ -157,6 +156,6 @@
 double lognormal_weight(double mean, double sigma, double x) {
 
-	double sigma2 = pow(sigma, 2);
-	return 1/(x*sigma2) * exp( -pow((log(x) -mean), 2) / (2*sigma2));
+	double sigma2 = pow(sigma, 2.0);
+	return 1.0/(x*sigma2) * exp( -pow((log(x) -mean), 2.0) / (2.0*sigma2));
 
 }
@@ -174,5 +173,5 @@
 		width = 0.0;
 		npts  = 1;
-		nsigmas = 3;
+		nsigmas = 3.0;
 	}
 
@@ -185,5 +184,5 @@
 		for(int i=0; i<npts; i++) {
 			// We cover n(nsigmas) times sigmas on each side of the mean
-			double val = value + width * (2.0*nsigmas*i/float(npts-1) - nsigmas);
+			double val = value + width * (2.0*nsigmas*double(i)/double(npts-1) - nsigmas);
 
 			if ( ((*par).has_min==false || val>(*par).min)
@@ -205,5 +204,5 @@
 	npts  = 21;
 	width = 0.0;
-	nsigmas = 3;
+	nsigmas = 3.0;
 };
 
@@ -217,7 +216,7 @@
 double schulz_weight(double mean, double sigma, double x) {
 	double vary, expo_value;
-    double z = pow(mean/ sigma, 2)-1;
+    double z = pow(mean/ sigma, 2.0)-1.0;
 	double R= x/mean;
-	double zz= z+1;
+	double zz= z+1.0;
 	double expo;
 	expo = zz*log(zz)+z*log(R)-R*zz-log(mean)-lgamma(zz);
@@ -237,5 +236,5 @@
 		width = 0.0;
 		npts  = 1;
-		nsigmas = 3;
+		nsigmas = 3.0;
 	}
 
@@ -248,5 +247,5 @@
 		for(int i=0; i<npts; i++) {
 			// We cover n(nsigmas) times sigmas on each side of the mean
-			double val = value + width * (2.0*nsigmas*i/float(npts-1) - nsigmas);
+			double val = value + width * (2.0*nsigmas*double(i)/double(npts-1) - nsigmas);
 
 			if ( ((*par).has_min==false || val>(*par).min)
Index: sansmodels/src/sans/models/c_models/parameters.hh
===================================================================
--- sansmodels/src/sans/models/c_models/parameters.hh	(revision eba988511d86410985b5a1c35ce70dd3968132a8)
+++ sansmodels/src/sans/models/c_models/parameters.hh	(revision 1d78e4bf33d7dd5aa6967f5064d35bc916a4f2ee)
@@ -68,5 +68,5 @@
 public:
 	/// Number of sigmas on each side of the mean
-	int nsigmas;
+	double nsigmas;
 
 	GaussianDispersion();
@@ -82,5 +82,5 @@
 public:
 	/// Number of sigmas on each side of the mean
-	int nsigmas;
+	double nsigmas;
 
 	SchulzDispersion();
@@ -96,5 +96,5 @@
 public:
 	/// Number of sigmas on each side of the mean
-	int nsigmas;
+	double nsigmas;
 
 	LogNormalDispersion();
