diff --git a/main.cpp b/main.cpp
index 31467fdd2c65030b6294fec2caac46ba102440bd..a4baa9f6a080b4087fb24406969830f2cdb9ff08 100644
--- a/main.cpp
+++ b/main.cpp
@@ -132,6 +132,9 @@ static void runParamSweep(const std::string& modelstr, const eis::Range& omega,
 	if(parameters.empty())
 		return;
 
+	for(const eis::Range& range : parameters)
+		range.print(eis::Log::INFO);
+
 	eis::Log(eis::Log::INFO)<<"Saving sweep to "<<PARA_SWEEP_OUTPUT_DIR;
 	std::filesystem::create_directory(PARA_SWEEP_OUTPUT_DIR);
 
diff --git a/normalize.cpp b/normalize.cpp
index a7cb4dfbbd4bcba608e26d314d695bf59d3c7f3a..f32488cb4b03016181485be19408ea4822621eb2 100644
--- a/normalize.cpp
+++ b/normalize.cpp
@@ -30,20 +30,24 @@ void eis::eraseSingularites(std::vector<eis::DataPoint>& data)
 
 void eis::normalize(std::vector<eis::DataPoint>& data)
 {
-	fvalue maxRe = 0;
-	fvalue maxIm = 0;
+	fvalue maxRe = std::numeric_limits<fvalue>::min();
+	fvalue maxIm = std::numeric_limits<fvalue>::min();
+	fvalue minRe = std::numeric_limits<fvalue>::max();
 	for(const DataPoint& dataPoint : data)
 	{
-		maxRe = fabs(dataPoint.im.real()) > maxRe ? fabs(dataPoint.im.real()) :  maxRe;
+		maxRe = fabs(dataPoint.im.real()) > maxRe ? fabs(dataPoint.im.real()) : maxRe;
 		maxIm = fabs(dataPoint.im.imag()) > maxIm ? fabs(dataPoint.im.imag()) : maxIm;
+
+		if(minRe > dataPoint.im.real())
+			minRe = dataPoint.im.real();
 	}
 
-	maxRe = maxRe == 0 ? 1 : maxRe;
+	maxRe = maxRe == minRe ? 1 : maxRe-minRe;
 	maxIm = maxIm == 0 ? 1 : maxIm;
 
 	for(DataPoint& dataPoint : data)
 	{
-		dataPoint.im.real(dataPoint.im.real() / maxRe);
+		dataPoint.im.real((dataPoint.im.real()-minRe) / maxRe);
 		dataPoint.im.imag(dataPoint.im.imag() / maxIm);
 	}
 }