diff --git a/drt.cpp b/drt.cpp
index 6812217f7a3c90fc49d849485179f889d2377db9..c19ff0416e952665f9e79211536c6d341cb3f9df 100644
--- a/drt.cpp
+++ b/drt.cpp
@@ -168,7 +168,8 @@ static Eigen::Matrix<fv, Eigen::Dynamic, 2> calcBounds(Eigen::VectorX<std::compl
 }
 
 template<typename fv>
-Eigen::VectorX<fv> calcDrt(Eigen::VectorX<std::complex<fv>>& impedanceSpectra, Eigen::VectorX<fv>& omegaTensor, FitMetics& fm, const FitParameters& fp)
+Eigen::VectorX<fv> calcDrt(Eigen::VectorX<std::complex<fv>>& impedanceSpectra, Eigen::VectorX<fv>& omegaTensor,
+	FitMetics& fm, const FitParameters& fp, fv* rSeries)
 {
 	Eigen::Matrix<fv, Eigen::Dynamic, Eigen::Dynamic> aMatrixImag = aImag<fv>(omegaTensor);
 	Eigen::Matrix<fv, Eigen::Dynamic, Eigen::Dynamic> aMatrixReal = aReal<fv>(omegaTensor);
@@ -201,14 +202,17 @@ Eigen::VectorX<fv> calcDrt(Eigen::VectorX<std::complex<fv>>& impedanceSpectra, E
 		throw drt_errror(std::string(ex.what()));
 	}
 
-	return x;
+	if(rSeries)
+		*rSeries = x[x.size()-1];
+
+	return x(Eigen::seq(0, x.size()-2));
 }
 
 template Eigen::VectorX<double> calcDrt<double>(Eigen::VectorX<std::complex<double>>&,
-	Eigen::VectorX<double>&, FitMetics& fm, const FitParameters& fp);
+	Eigen::VectorX<double>&, FitMetics& fm, const FitParameters& fp, double* rSeries);
 
 template Eigen::VectorX<float> calcDrt<float>(Eigen::VectorX<std::complex<float>>&,
-	Eigen::VectorX<float>&, FitMetics& fm, const FitParameters& fp);
+	Eigen::VectorX<float>&, FitMetics& fm, const FitParameters& fp, float* rSeries);
 
 template<typename fv>
 fv testFn()
@@ -220,21 +224,23 @@ fv testFn()
 template double testFn<double>();
 
 #ifdef USE_EISGEN
-std::vector<fvalue> calcDrt(const std::vector<eis::DataPoint>& data, const std::vector<fvalue>& omegaVector, FitMetics& fm, const FitParameters& fp)
+std::vector<fvalue> calcDrt(const std::vector<eis::DataPoint>& data, const std::vector<fvalue>& omegaVector,
+	FitMetics& fm, const FitParameters& fp, fvalue* rSeries)
 {
 	Eigen::VectorX<std::complex<fvalue>> impedanceSpectra = eistoeigen(data);
 	Eigen::VectorX<fvalue> omega = Eigen::VectorX<fvalue>::Map(omegaVector.data(), omegaVector.size());
 
-	Eigen::VectorX<fvalue> drt = calcDrt<fvalue>(impedanceSpectra, omega, fm, fp);
+	Eigen::VectorX<fvalue> drt = calcDrt<fvalue>(impedanceSpectra, omega, fm, fp, rSeries);
 	std::vector<fvalue> stdvector(drt.data(), drt.data()+drt.size());
 	return stdvector;
 }
 
-std::vector<fvalue> calcDrt(const std::vector<eis::DataPoint>& data, FitMetics& fm,  const FitParameters& fp)
+std::vector<fvalue> calcDrt(const std::vector<eis::DataPoint>& data, FitMetics& fm,  const FitParameters& fp, fvalue* rSeries)
 {
 	Eigen::VectorX<fvalue> omega;
 	Eigen::VectorX<std::complex<fvalue>> impedanceSpectra = eistoeigen(data, &omega);
-	Eigen::VectorX<fvalue> drt = calcDrt<fvalue>(impedanceSpectra, omega, fm, fp);
+	Eigen::VectorX<fvalue> drt = calcDrt<fvalue>(impedanceSpectra, omega, fm, fp, rSeries);
+	std::cout<<omega.size()<<','<<impedanceSpectra.size()<<','<<drt.size()<<std::endl;
 	std::vector<fvalue> stdvector(drt.data(), drt.data()+drt.size());
 	return stdvector;
 }
diff --git a/eisdrt/eigendrt.h b/eisdrt/eigendrt.h
index e21589f83b82c1eb623e6b470e24a2b5b51a3a20..7cc3338f526f2711089b3aeb87b6952cd8f24fbc 100644
--- a/eisdrt/eigendrt.h
+++ b/eisdrt/eigendrt.h
@@ -37,11 +37,13 @@ Api for use with Eigen applications
  * @param omegaTensor vector with the omega values that the impedances where mesured at
  * @param fm a fit metrics struct where this function returns information on the fit aquired
  * @param fp a struct with fit parameters
+ * @param rSeries an optional paramter where the seires resistance is stored
  * @return a vector with the drt values
  */
 
 template<typename fv>
-Eigen::VectorX<fv> calcDrt(Eigen::VectorX<std::complex<fv>>& impedanceSpectra, Eigen::VectorX<fv>& omegaTensor, FitMetics& fm, const FitParameters& fp);
+Eigen::VectorX<fv> calcDrt(Eigen::VectorX<std::complex<fv>>& impedanceSpectra, Eigen::VectorX<fv>& omegaTensor,
+	FitMetics& fm, const FitParameters& fp, fv* rSeries = nullptr);
 
 /**
 ....
diff --git a/eisdrt/eisdrt.h b/eisdrt/eisdrt.h
index 4134d25b436848f97552363ab469bd94b9299c25..9052df665ac61f4e7d6ebdff3e2331e424eadaed 100644
--- a/eisdrt/eisdrt.h
+++ b/eisdrt/eisdrt.h
@@ -36,9 +36,11 @@ Api for use with eisgenerator applications
  * @param omegaVector vector with the omega values that the impedances where mesured at
  * @param fm a fit metrics struct where this function returns information on the fit aquired
  * @param fp a struct with fit parameters
+ * @param rSeries an optional paramter where the seires resistance is stored
  * @return a vector with the drt values
  */
-std::vector<fvalue> calcDrt(const std::vector<eis::DataPoint>& data, const std::vector<fvalue>& omegaVector, FitMetics& fm, const FitParameters& fp);
+std::vector<fvalue> calcDrt(const std::vector<eis::DataPoint>& data, const std::vector<fvalue>& omegaVector, FitMetics& fm,
+	const FitParameters& fp, fvalue* rSeries = nullptr);
 
 /**
  * @brief calculate a drt on eisgenerator types
@@ -46,9 +48,10 @@ std::vector<fvalue> calcDrt(const std::vector<eis::DataPoint>& data, const std::
  * @param data a vector of eisgenerator datapoints with the values to your expirament, embedded omega values are used
  * @param fm a fit metrics struct where this function returns information on the fit aquired
  * @param fp a struct with fit parameters
+ * @param rSeries an optional paramter where the seires resistance is stored
  * @return a vector with the drt values
  */
-std::vector<fvalue> calcDrt(const std::vector<eis::DataPoint>& data, FitMetics& fm, const FitParameters& fp);
+std::vector<fvalue> calcDrt(const std::vector<eis::DataPoint>& data, FitMetics& fm, const FitParameters& fp, fvalue* rSeries = nullptr);
 
 /**
 ....
diff --git a/main.cpp b/main.cpp
index 00455d60ebdf09a73e8473760c15aba194609b43..63cecf8996711670ffccf4620920ceda78c6e772 100644
--- a/main.cpp
+++ b/main.cpp
@@ -79,12 +79,16 @@ int main(int argc, char** argv)
 	FitMetics fm;
 
 	// calculate the drt for this spectrum
-	std::vector<fvalue> x = calcDrt(data, fm, FitParameters(1000));
+	fvalue rSeries;
+	std::vector<fvalue> x = calcDrt(data, fm, FitParameters(1000), &rSeries);
+
+	assert(x.size() == data.size());
 
 	// print some info on the drt
 	std::cout<<"Iterations: "<<fm.iterations<<'\n';
 	std::cout<<"fx "<<fm.fx<<"\ndrt: ";
 	printFvalueVector(x);
+	std::cout<<"r series: "<<rSeries<<'\n';
 
 	return 0;
 }