diff --git a/src/adql/query/operand/function/geometry/CentroidFunction.java b/src/adql/query/operand/function/geometry/CentroidFunction.java
index 23a2b7852972ed5df64646e54739db87b29842b0..049d9c38ecf2d889b8503dbd7d3b2bb0df729b4c 100644
--- a/src/adql/query/operand/function/geometry/CentroidFunction.java
+++ b/src/adql/query/operand/function/geometry/CentroidFunction.java
@@ -16,7 +16,7 @@ package adql.query.operand.function.geometry;
  * You should have received a copy of the GNU Lesser General Public License
  * along with ADQLLibrary.  If not, see <http://www.gnu.org/licenses/>.
  * 
- * Copyright 2012-2015 - UDS/Centre de Données astronomiques de Strasbourg (CDS),
+ * Copyright 2012-2017 - UDS/Centre de Données astronomiques de Strasbourg (CDS),
  *                       Astronomisches Rechen Institut (ARI)
  */
 
@@ -36,7 +36,7 @@ import adql.query.operand.ADQLOperand;
  * </i></p>
  * 
  * @author Gr&eacute;gory Mantelet (CDS;ARI)
- * @version 1.4 (06/2015)
+ * @version 1.4 (02/2017)
  */
 public class CentroidFunction extends GeometryFunction {
 
@@ -80,7 +80,7 @@ public class CentroidFunction extends GeometryFunction {
 
 	@Override
 	public boolean isNumeric(){
-		return true;
+		return false;
 	}
 
 	@Override
@@ -90,7 +90,7 @@ public class CentroidFunction extends GeometryFunction {
 
 	@Override
 	public boolean isGeometry(){
-		return false;
+		return true;
 	}
 
 	@Override
diff --git a/src/adql/translator/PgSphereTranslator.java b/src/adql/translator/PgSphereTranslator.java
index 6474ab34bea48921ee21b66dba4c853b8ac00732..358d79d79f20814dee9f4ee92f879e5ae63d0c6b 100644
--- a/src/adql/translator/PgSphereTranslator.java
+++ b/src/adql/translator/PgSphereTranslator.java
@@ -16,7 +16,7 @@ package adql.translator;
  * You should have received a copy of the GNU Lesser General Public License
  * along with ADQLLibrary.  If not, see <http://www.gnu.org/licenses/>.
  * 
- * Copyright 2012-2015 - UDS/Centre de Données astronomiques de Strasbourg (CDS),
+ * Copyright 2012-2017 - UDS/Centre de Données astronomiques de Strasbourg (CDS),
  *                       Astronomisches Rechen Institut (ARI)
  */
 
@@ -34,6 +34,7 @@ import adql.query.constraint.Comparison;
 import adql.query.constraint.ComparisonOperator;
 import adql.query.operand.function.geometry.AreaFunction;
 import adql.query.operand.function.geometry.BoxFunction;
+import adql.query.operand.function.geometry.CentroidFunction;
 import adql.query.operand.function.geometry.CircleFunction;
 import adql.query.operand.function.geometry.ContainsFunction;
 import adql.query.operand.function.geometry.DistanceFunction;
@@ -48,7 +49,7 @@ import adql.query.operand.function.geometry.PolygonFunction;
  * The other functions are managed by {@link PostgreSQLTranslator}.</p>
  * 
  * @author Gr&eacute;gory Mantelet (CDS;ARI)
- * @version 1.4 (07/2015)
+ * @version 1.4 (07/2017)
  */
 public class PgSphereTranslator extends PostgreSQLTranslator {
 
@@ -72,7 +73,7 @@ public class PgSphereTranslator extends PostgreSQLTranslator {
 	 * Builds a PgSphereTranslator which always translates in SQL all identifiers (schema, table and column) in the specified case sensitivity ;
 	 * in other words, schema, table and column names will all be surrounded or not by double quotes in the SQL translation.
 	 * 
-	 * @param allCaseSensitive	<i>true</i> to translate all identifiers in a case sensitive manner (surrounded by double quotes), <i>false</i> for case insensitivity. 
+	 * @param allCaseSensitive	<i>true</i> to translate all identifiers in a case sensitive manner (surrounded by double quotes), <i>false</i> for case insensitivity.
 	 * 
 	 * @see PostgreSQLTranslator#PostgreSQLTranslator(boolean)
 	 */
@@ -174,6 +175,13 @@ public class PgSphereTranslator extends PostgreSQLTranslator {
 		return str.toString();
 	}
 
+	@Override
+	public String translate(CentroidFunction centroidFunction) throws TranslationException{
+		StringBuffer str = new StringBuffer("center(");
+		str.append(translate(centroidFunction.getParameter(0))).append(")");
+		return str.toString();
+	}
+
 	@Override
 	public String translate(ContainsFunction fct) throws TranslationException{
 		StringBuffer str = new StringBuffer("(");
@@ -245,7 +253,7 @@ public class PgSphereTranslator extends PostgreSQLTranslator {
 		String objType = pgo.getType().toLowerCase();
 		String geomStr = pgo.getValue();
 
-		/* Only spoint, scircle, sbox and spoly are supported ; 
+		/* Only spoint, scircle, sbox and spoly are supported ;
 		 * these geometries are parsed and transformed in Region instances:*/
 		if (objType.equals("spoint"))
 			return (new PgSphereGeometryParser()).parsePoint(geomStr);
@@ -434,7 +442,7 @@ public class PgSphereTranslator extends PostgreSQLTranslator {
 		 * Finalize the parsing.
 		 * No more characters (except eventually some space characters) should remain in the PgSphere expression to parse.
 		 * 
-		 * @throws ParseException	If other non-space characters remains. 
+		 * @throws ParseException	If other non-space characters remains.
 		 */
 		private void end() throws ParseException{
 			// Skip all spaces:
@@ -451,7 +459,7 @@ public class PgSphereTranslator extends PostgreSQLTranslator {
 		}
 
 		/**
-		 * Tool function which skips all next space characters until the next meaningful characters. 
+		 * Tool function which skips all next space characters until the next meaningful characters.
 		 */
 		private void skipSpaces(){
 			while(pos < expr.length() && Character.isWhitespace(expr.charAt(pos)))
@@ -555,7 +563,7 @@ public class PgSphereTranslator extends PostgreSQLTranslator {
 		}
 
 		/**
-		 * Internal spoint parsing function. It parses the PgSphere expression stored in this parser as a point. 
+		 * Internal spoint parsing function. It parses the PgSphere expression stored in this parser as a point.
 		 * 
 		 * @return	The ra and dec coordinates (in degrees) of the parsed point.
 		 * 
@@ -624,7 +632,8 @@ public class PgSphereTranslator extends PostgreSQLTranslator {
 			end();
 
 			// Build the STC Box region:
-			double width = Math.abs(northeast[0] - southwest[0]), height = Math.abs(northeast[1] - southwest[1]);
+			double width = Math.abs(northeast[0] - southwest[0]),
+					height = Math.abs(northeast[1] - southwest[1]);
 			double[] center = new double[]{northeast[0] - width / 2,northeast[1] - height / 2};
 			return new Region(null, center, width, height);
 		}
diff --git a/test/adql/query/operand/function/geometry/TestCentroidFunction.java b/test/adql/query/operand/function/geometry/TestCentroidFunction.java
new file mode 100644
index 0000000000000000000000000000000000000000..ee1795015d8e2895a11b568f3734265182f3f01c
--- /dev/null
+++ b/test/adql/query/operand/function/geometry/TestCentroidFunction.java
@@ -0,0 +1,28 @@
+package adql.query.operand.function.geometry;
+
+import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.assertTrue;
+import static org.junit.Assert.fail;
+
+import org.junit.Test;
+
+import adql.query.operand.NumericConstant;
+import adql.query.operand.StringConstant;
+import adql.query.operand.function.geometry.GeometryFunction.GeometryValue;
+
+public class TestCentroidFunction {
+
+	@Test
+	public void testIsGeometry(){
+		try{
+			CentroidFunction centfc = new CentroidFunction(new GeometryValue<GeometryFunction>(new CircleFunction(new StringConstant("ICRS"), new NumericConstant(128.23), new NumericConstant(0.53), new NumericConstant(2))));
+			assertTrue(centfc.isGeometry());
+			assertFalse(centfc.isNumeric());
+			assertFalse(centfc.isString());
+		}catch(Throwable t){
+			t.printStackTrace(System.err);
+			fail("An error occured while building a simple CentroidFunction! (see the console for more details)");
+		}
+	}
+
+}
diff --git a/test/adql/translator/TestPgSphereTranslator.java b/test/adql/translator/TestPgSphereTranslator.java
index 2f34471fc7be78303a7945fee526c63fb425e71f..346ed8057c2558b1aa57ef828d04e55872fd19c6 100644
--- a/test/adql/translator/TestPgSphereTranslator.java
+++ b/test/adql/translator/TestPgSphereTranslator.java
@@ -19,6 +19,12 @@ import adql.db.DBType;
 import adql.db.DBType.DBDatatype;
 import adql.db.STCS.Region;
 import adql.parser.ParseException;
+import adql.query.operand.NumericConstant;
+import adql.query.operand.StringConstant;
+import adql.query.operand.function.geometry.CentroidFunction;
+import adql.query.operand.function.geometry.CircleFunction;
+import adql.query.operand.function.geometry.GeometryFunction;
+import adql.query.operand.function.geometry.GeometryFunction.GeometryValue;
 
 public class TestPgSphereTranslator {
 
@@ -34,6 +40,18 @@ public class TestPgSphereTranslator {
 	@After
 	public void tearDown() throws Exception{}
 
+	@Test
+	public void testTranslateCentroidFunction(){
+		try{
+			PgSphereTranslator translator = new PgSphereTranslator();
+			CentroidFunction centfc = new CentroidFunction(new GeometryValue<GeometryFunction>(new CircleFunction(new StringConstant("ICRS"), new NumericConstant(128.23), new NumericConstant(0.53), new NumericConstant(2))));
+			assertEquals("center(scircle(spoint(radians(128.23),radians(0.53)),radians(2)))", translator.translate(centfc));
+		}catch(Throwable t){
+			t.printStackTrace(System.err);
+			fail("An error occured while building a simple CentroidFunction! (see the console for more details)");
+		}
+	}
+
 	@Test
 	public void testConvertTypeFromDB(){
 		PgSphereTranslator translator = new PgSphereTranslator();