diff --git a/eisgenerator/eistype.h b/eisgenerator/eistype.h
index edd83ff74fc1217f84a81e919f8c63136b39e2fa..595ecb870ef221827cb82928da22b5317a46383c 100644
--- a/eisgenerator/eistype.h
+++ b/eisgenerator/eistype.h
@@ -32,12 +32,13 @@ public:
 	{
 		return at(step);
 	}
+
 	fvalue at(size_t index) const
 	{
 		assert(index < count);
 		if(count < 2)
 			return start;
-		return log ? pow(10, stepSize()*index+start) : stepSize()*index+start;
+		return log ? pow(10, stepSize()*index+log10(start)) : stepSize()*index+start;
 	}
 	fvalue operator[](size_t index) const
 	{
@@ -63,6 +64,7 @@ public:
 	Range() = default;
 	void print(int level) const;
 	std::string getString() const;
+	bool isSane() const;
 
 	static std::vector<Range> rangesFromParamString(const std::string& paramStr, size_t count);
 };
diff --git a/eistype.cpp b/eistype.cpp
index ad2fbd66d5c9a70d8319452b3cba889ca7bf164c..148487bcb6b5ffa4d0018a23af101bc11e6b946b 100644
--- a/eistype.cpp
+++ b/eistype.cpp
@@ -79,7 +79,16 @@ std::string eis::Range::getString() const
 	if(count > 1)
 		ss<<'~'<<end;
 	if(log)
-		ss<<'F';
+		ss<<'L';
 
 	return ss.str();
 }
+
+bool eis::Range::isSane() const
+{
+	if(log && (start == 0 || end == 0))
+		return false;
+	if(end < start)
+		return false;
+	return true;
+}
diff --git a/main.cpp b/main.cpp
index 6df99523472fcb809c036fd587f55f4bc5fc28d1..e96ce37d334a4104b46ec7cce343ca89d1b02b2d 100644
--- a/main.cpp
+++ b/main.cpp
@@ -85,11 +85,12 @@ static void runParamSweep(Config config, eis::Model& model)
 	auto start = std::chrono::high_resolution_clock::now();
 	for(size_t i = 0; i < count; ++i)
 	{
+		eis::Log(eis::Log::DEBUG)<<"Executeing sweep for "<<i;
 		std::vector<eis::DataPoint> data =  model.executeSweep(config.omegaRange, i);
 		size_t outputSize = data.size();
 		data = eis::reduceRegion(data);
 		data = eis::rescale(data, outputSize);
-		eis::saveToDisk(data, std::string(PARA_SWEEP_OUTPUT_DIR)+std::string("/")+std::to_string(++i)+".csv");
+		eis::saveToDisk(data, std::string(PARA_SWEEP_OUTPUT_DIR)+std::string("/")+std::to_string(i)+".csv");
 		eis::Log(eis::Log::INFO, false)<<'.';
 	}
 	auto end = std::chrono::high_resolution_clock::now();
@@ -108,6 +109,12 @@ int main(int argc, char** argv)
 	if(config.hertz)
 		config.omegaRange = config.omegaRange*static_cast<fvalue>(2*M_PI);
 
+	if(!config.omegaRange.isSane())
+	{
+		eis::Log(eis::Log::INFO)<<"The Omega range: "<<config.omegaRange.getString()<<" is invalid";
+		return 1;
+	}
+
 	if(config.inputType == INPUT_TYPE_BOUKAMP)
 		config.modelStr = eis::cdcToEis(config.modelStr);
 	else if(config.inputType == INPUT_TYPE_RELAXIS)
diff --git a/model.cpp b/model.cpp
index 02e3a68df03d0d589fb8d8c382dc78479ff3c38b..74c0bb76b012c0f5a923a4b8a7401bc215304285 100644
--- a/model.cpp
+++ b/model.cpp
@@ -277,21 +277,22 @@ void Model::resolveSteps(int64_t index)
 	std::vector<size_t> placeMagnitude;
 	placeMagnitude.reserve(flatRanges.size());
 
+	Log(Log::DEBUG)<<"Magnitudes:";
 	for(size_t i = 0; i < flatRanges.size(); ++i)
 	{
 		size_t magnitude = 1;
 		for(int64_t j = static_cast<int64_t>(i)-1; j >= 0; --j)
-		{
 			magnitude = magnitude*flatRanges[j]->count;
-		}
 		placeMagnitude.push_back(magnitude);
+		Log(Log::DEBUG)<<placeMagnitude.back();
 	}
 
-	for(int64_t i = flatRanges.size(); i >= 0 && index > 0; --i)
+	Log(Log::DEBUG)<<"Steps for index "<<index<<" ranges "<<flatRanges.size()<<" Ranges:";
+	for(int64_t i = flatRanges.size()-1; i >= 0; --i)
 	{
 		flatRanges[i]->step = index/placeMagnitude[i];
 		index = index % placeMagnitude[i];
-		Log(Log::DEBUG)<<placeMagnitude[i]<<'('<<flatRanges[i]->step<<')'<<(i == 0 ? "\n" : " + ");
+		Log(Log::DEBUG)<<placeMagnitude[i]<<'('<<flatRanges[i]->step<<')'<<(i == 0 ? "" : " + ");
 	}
 }