diff --git a/php/classes/VOTableMgr.php b/php/classes/VOTableMgr.php
index c0663c3..10414ca 100644
--- a/php/classes/VOTableMgr.php
+++ b/php/classes/VOTableMgr.php
@@ -302,45 +302,49 @@ class VOTableMgr {
 			case 'boolean':
 			case 'unsignedByte':
 				$b = $substr;
-				$res = $b == "T" || $b == "t" || $b == "1";
+				$res = $b == 'T' || $b == 't' || $b == '1';
 				break;
 			case 'char':
-				$res = $row_size!=0 ? utf8_encode($substr) : NULL;
+				$res = $row_size !=0 ? utf8_encode($substr) : NULL;
 			case 'unicodeChar':
-				$res = $row_size!=0 ? utf8_encode(str_replace("\0", "", $substr)) : NULL;
+				$res = $row_size !=0 ? utf8_encode(str_replace("\0", '', $substr)) : NULL;
 				break;
 			case 'short':
-				$res = unpack("ss", $substr)["s"];
+				$res = unpack('ss', $substr)['s'];
+				$res = is_nan($res) ? NULL : $res;
 				break;
 			case 'int':
-				$res = unpack("Ns", $substr)["s"];
+				$res = unpack('Ns', $substr)['s'];
+				$res = is_nan($res) ? NULL : $res;
 				break;
 			case 'long':
-				$res = unpack("Js", $substr)["s"];  // /!\ J -> PHP 5.6 only
+				$res = unpack('Js', $substr)['s'];  // /!\ J -> PHP 5.6 only
+				$res = is_nan($res) ? NULL : $res;
 				break;
 			case 'float':
-				$res = unpack("fs", $substr)["s"];
-
+				$res = unpack('fs', $substr)['s'];
 				// If machine is little endian:
 				if($this->is_little_endian) {
-					$res = unpack('f1f', strrev(pack('f', $res)))["f"];
+					$res = unpack('f1f', strrev(pack('f', $res)))['f'];
 				}
+				$res = is_nan($res) ? NULL : $res;
 				break;
 			case 'double':
-				$res = unpack("ds", $substr)["s"];
-
+				$res = unpack('ds', $substr)['s'];
 				// If machine is little endian:
 				if($this->is_little_endian) {
-					$res = unpack('d1d', strrev(pack('d', $res)))["d"];
+					$res = unpack('d1d', strrev(pack('d', $res)))['d'];
 				}
+				$res = is_nan($res) ? NULL : $res;
 				break;
 			default:
 				$res = NULL;
-				error_log("Unknown character: $data_type");
+				error_log("Unknown datatype: $data_type");
 				break;
 		}
 		$this->c+=$row_size;
-		return (string)$res;
+		return $res;
+		// return (string)$res;
 	}
 
 
diff --git a/php/epntap.php b/php/epntap.php
index 6e84db2..2e3c1ef 100644
--- a/php/epntap.php
+++ b/php/epntap.php
@@ -165,12 +165,10 @@ function getGranules() {
 		$names = ['dataproduct_type' => 'Type', 'access_estsize' => 'Size']; // default: pretty printed key name
 		$renderers = ['dataproduct_type' => 'type', 'time_min' => 'date', 'time_max' => 'date', 'access_estsize' => 'size', 'thumbnail_url' => 'img', 'access_url' => 'link', 'access_format' => 'format']; // default: text
 		$flexs = ['granule_uid' => 2]; // default: 1
-		// $types = ['boolean' => , 'integer']; // TODO see http://php.net/manual/fr/function.gettype.php
 
 		$fields = array();
 		$columns = array();
 		foreach($response['data'][0] as $key => $value) {
-			error_log('Granule ' . $key . ' is ' . gettype($value));
 			$fields[] = ['name' => $key, 'type' => 'string'];
 			$columns[] = [
 				'dataIndex' => $key,
--
libgit2 0.21.2