diff --git a/kissinference.c b/kissinference.c
index 86317c7cae2c420dc65992333f5851459dc42137..a3efda617288aeb759aa65f69fac370322204bc9 100644
--- a/kissinference.c
+++ b/kissinference.c
@@ -508,15 +508,18 @@ static int kiss_cmp_float(const void *x, const void *y)
 	float *a = (float*)x;
 	float *b = (float*)y;
 
-	if(a < b)
-		return -1;
-	if(b < a)
+	if(*a < *b)
 		return 1;
+	if(*b < *a)
+		return -1;
 	return 0;
 }
 
 float kiss_median(float *data, size_t input_length)
 {
+	if(input_length == 1)
+		return data[0];
+
 	float *data_cpy = malloc(input_length*sizeof(*data));
 	memcpy(data_cpy, data, input_length*sizeof(*data));
 	qsort(data_cpy, input_length, sizeof(*data_cpy), kiss_cmp_float);
diff --git a/test.cpp b/test.cpp
index e48f9f2114be89ca32328aa995d3dcd64ad9e7e3..6dc9f22f82ee18759ef8e04ebe58859097474f6b 100644
--- a/test.cpp
+++ b/test.cpp
@@ -281,12 +281,30 @@ static bool testMedian()
 	if(!eis::fvalueEq(median, medianRef))
 	{
 		ret = false;
+		std::cout<<"Grads\n";
+		for(float val : grads)
+			std::cout<<val<<'\n';
 		std::cout<<median<<" is not "<<medianRef<<'\n';
 	}
 
 	return ret;
 }
 
+bool testTranslate()
+{
+	const char *model = "r-rc(r-w)";
+	char *cdc = kiss_eis_to_cdc(model);
+	char *relaxis = kiss_eis_to_relaxis(model);
+	std::cout<<"Eis: "<<model<<'\n';
+	std::cout<<"CDC: "<<cdc<<'\n';
+	std::cout<<"RelaxIS: "<<relaxis<<'\n';
+
+	free(cdc);
+	free(relaxis);
+
+	return true;
+}
+
 int main(int argc, char** argv)
 {
 	if(argc < 2)
@@ -339,4 +357,10 @@ int main(int argc, char** argv)
 		std::cerr<<"kiss_filter_spectra not working\n";
 		return 7;
 	}
+
+	if(!testTranslate())
+	{
+		std::cerr<<"kiss_eis_to_cdc or kiss_eis_to_relaxis not working\n";
+		return 8;
+	}
 }