diff --git a/eisnoise.cpp b/eisnoise.cpp
index f9cfd290b77d6e16534e2c727fddb6590057a2bf..2a295c8ae92cc8ac995d1689f95da66c45342955 100644
--- a/eisnoise.cpp
+++ b/eisnoise.cpp
@@ -1,5 +1,6 @@
 #include "eisnoise/eisnoise.h"
 
+#include <cmath>
 #include <limits>
 #include <numeric>
 #include <sstream>
@@ -41,9 +42,14 @@ void EisNoise::addImpl(std::vector<eis::DataPoint>& spectra, const Noise& noise,
 		}
 
 		if(std::abs(spectra[i].im) > 0.001)
+		{
 			spectra[i].im = (noiseValue * spectra[i].im) * intensity + spectra[i].im;
+		}
 		else
-			spectra[i].im = (noiseValue * static_cast<fvalue>(0.001)) * intensity + spectra[i].im;
+		{
+			std::complex<fvalue> smallVal(std::copysign(0.001, spectra[i].im.real()), std::copysign(0.001, spectra[i].im.imag()));
+			spectra[i].im = (noiseValue * smallVal) * intensity + spectra[i].im;
+		}
 	}
 }