diff --git a/InSituLib/VtkMappedMeshSource.cpp b/InSituLib/VtkMappedMeshSource.cpp
index e325c698830b613d913973fb536b171e09c4419c..aba3d878e85d03f1c0bc36d389d50350d7ca02c1 100644
--- a/InSituLib/VtkMappedMeshSource.cpp
+++ b/InSituLib/VtkMappedMeshSource.cpp
@@ -114,6 +114,23 @@ int VtkMappedMeshSource::RequestData(vtkInformation *,
 			output->GetCellData()->AddArray(dataArray.GetPointer());
 	}
 
+	// int
+	for(std::vector<std::string>::const_iterator it = propertyNames.begin(); it != propertyNames.end(); ++it)
+	{
+		boost::optional<MeshLib::PropertyVector<int> const &> propertyVector(properties.getPropertyVector<int>(*it));
+		if(!propertyVector)
+			continue;
+
+		vtkNew<VtkMappedElementDataArrayTemplate<int> > dataArray;
+		dataArray->SetPropertyVector(const_cast<MeshLib::PropertyVector<int> &>(*propertyVector));
+		dataArray->SetName(it->c_str());
+
+		if(propertyVector->getMeshItemType() == MeshLib::MeshItemType::Node)
+			output->GetPointData()->AddArray(dataArray.GetPointer());
+		else if(propertyVector->getMeshItemType() == MeshLib::MeshItemType::Cell)
+			output->GetCellData()->AddArray(dataArray.GetPointer());
+	}
+
 	return 1;
 }
 
diff --git a/Tests/InSituLib/TestVtkMappedElementDataDouble.cpp b/Tests/InSituLib/TestVtkMappedElementDataDouble.cpp
index f60a4f66bae8ae87c822b590d19803e59adb98ea..67742df773b9930d18f77e83ee914a3aab4fd142 100644
--- a/Tests/InSituLib/TestVtkMappedElementDataDouble.cpp
+++ b/Tests/InSituLib/TestVtkMappedElementDataDouble.cpp
@@ -23,7 +23,7 @@
 
 #include "VtkMappedElementDataArrayTemplate.h"
 
-TEST(InSituLibDoubleArray, Init)
+TEST(InSituLibMappedArrays, Double)
 {
 	const size_t mesh_size = 5;
 	const double length = 1.0;
@@ -46,8 +46,41 @@ TEST(InSituLibDoubleArray, Init)
 	ASSERT_EQ(dataArray->GetNumberOfComponents(), 1);
 	ASSERT_EQ(dataArray->GetNumberOfTuples(), size);
 
-	// First array entry
 	ASSERT_EQ(dataArray->GetValueReference(0), 1.0);
+	double* range = dataArray->GetRange(0);
+	ASSERT_EQ(range[0], 1.0);
+	ASSERT_EQ(range[1], 1.0 + mesh->getNElements() - 1.0);
+
+	delete mesh;
+}
+
+TEST(InSituLibMappedArrays, Int)
+{
+	const size_t mesh_size = 5;
+	const double length = 1.0;
+
+	MeshLib::Mesh* mesh = MeshLib::MeshGenerator::generateRegularHexMesh(length, mesh_size);
+
+	ASSERT_TRUE(mesh != nullptr);
+	const std::size_t size(mesh_size*mesh_size*mesh_size);
+
+	std::string const prop_name("TestProperty");
+	boost::optional<MeshLib::PropertyVector<int> &> properties(
+		mesh->getProperties().createNewPropertyVector<int>(prop_name,
+			MeshLib::MeshItemType::Cell));
+	(*properties).resize(size);
+	std::iota((*properties).begin(), (*properties).end(), 1);
+
+	vtkNew<InSituLib::VtkMappedElementDataArrayTemplate<int> > dataArray;
+	dataArray->SetPropertyVector(*properties);
+
+	ASSERT_EQ(dataArray->GetNumberOfComponents(), 1);
+	ASSERT_EQ(dataArray->GetNumberOfTuples(), size);
+
+	ASSERT_EQ(dataArray->GetValueReference(0), 1);
+	double* range = dataArray->GetRange(0);
+	ASSERT_EQ(range[0], 1);
+	ASSERT_EQ(range[1], 1 + mesh->getNElements() - 1);
 
 	delete mesh;
 }
\ No newline at end of file
diff --git a/Tests/InSituLib/TestVtkMappedMeshSource.cpp b/Tests/InSituLib/TestVtkMappedMeshSource.cpp
index e134b4f642cce8ba314d28780622c3942ce5bb8e..b66e9027cabcd2c323d1e40264a6c5d1b1a6bae2 100644
--- a/Tests/InSituLib/TestVtkMappedMeshSource.cpp
+++ b/Tests/InSituLib/TestVtkMappedMeshSource.cpp
@@ -59,6 +59,22 @@ class InSituMesh : public ::testing::Test
 		);
 		(*cell_double_properties).resize(mesh->getNElements());
 		std::iota((*cell_double_properties).begin(), (*cell_double_properties).end(), 1);
+
+		std::string const point_int_prop_name("PointIntProperty");
+		boost::optional<MeshLib::PropertyVector<int> &> point_int_properties(
+			mesh->getProperties().createNewPropertyVector<int>(point_int_prop_name,
+				MeshLib::MeshItemType::Node)
+		);
+		(*point_int_properties).resize(mesh->getNNodes());
+		std::iota((*point_int_properties).begin(), (*point_int_properties).end(), 1);
+
+		std::string const cell_int_prop_name("CellIntProperty");
+		boost::optional<MeshLib::PropertyVector<int> &> cell_int_properties(
+			mesh->getProperties().createNewPropertyVector<int>(cell_int_prop_name,
+				MeshLib::MeshItemType::Cell)
+		);
+		(*cell_int_properties).resize(mesh->getNElements());
+		std::iota((*cell_int_properties).begin(), (*cell_int_properties).end(), 1);
 	}
 
 	~InSituMesh()
@@ -114,7 +130,7 @@ TEST_F(InSituMesh, MappedMeshSourceRoundtrip)
 	ASSERT_EQ((subdivisions+1)*(subdivisions+1)*(subdivisions+1), output->GetNumberOfPoints());
 	ASSERT_EQ(subdivisions*subdivisions*subdivisions, output->GetNumberOfCells());
 
-	// Point data array
+	// Point data arrays
 	vtkDataArray* pointDoubleArray = output->GetPointData()->GetScalars("PointDoubleProperty");
 	ASSERT_EQ(pointDoubleArray->GetSize(), mesh->getNNodes());
 	ASSERT_EQ(pointDoubleArray->GetComponent(0, 0), 1.0);
@@ -122,13 +138,27 @@ TEST_F(InSituMesh, MappedMeshSourceRoundtrip)
 	ASSERT_EQ(range[0], 1.0);
 	ASSERT_EQ(range[1], 1.0 + mesh->getNNodes() - 1.0);
 
-	// Cell data array
+	vtkDataArray* pointIntArray = output->GetPointData()->GetScalars("PointIntProperty");
+	ASSERT_EQ(pointIntArray->GetSize(), mesh->getNNodes());
+	ASSERT_EQ(pointIntArray->GetComponent(0, 0), 1.0);
+	range = pointIntArray->GetRange(0);
+	ASSERT_EQ(range[0], 1.0);
+	ASSERT_EQ(range[1], 1 + mesh->getNNodes() - 1);
+
+	// Cell data arrays
 	vtkDataArray* cellDoubleArray = output->GetCellData()->GetScalars("CellDoubleProperty");
 	ASSERT_EQ(cellDoubleArray->GetSize(), mesh->getNElements());
 	ASSERT_EQ(cellDoubleArray->GetComponent(0, 0), 1.0);
-	double* range2 = cellDoubleArray->GetRange(0);
-	ASSERT_EQ(range2[0], 1.0);
-	ASSERT_EQ(range2[1], 1.0 + mesh->getNElements() - 1.0);
+	range = cellDoubleArray->GetRange(0);
+	ASSERT_EQ(range[0], 1.0);
+	ASSERT_EQ(range[1], 1.0 + mesh->getNElements() - 1.0);
+
+	vtkDataArray* cellIntArray = output->GetCellData()->GetScalars("CellIntProperty");
+	ASSERT_EQ(cellIntArray->GetSize(), mesh->getNElements());
+	ASSERT_EQ(cellIntArray->GetComponent(0, 0), 1.0);
+	range = cellIntArray->GetRange(0);
+	ASSERT_EQ(range[0], 1.0);
+	ASSERT_EQ(range[1], 1 + mesh->getNElements() - 1);
 
 	// -- Write VTK mesh to file (in all combinations of binary, appended and compressed)
 	// atm vtkXMLWriter::Appended does not work, see http://www.paraview.org/Bug/view.php?id=13382
@@ -152,7 +182,9 @@ TEST_F(InSituMesh, MappedMeshSourceRoundtrip)
 			ASSERT_EQ(vtkMesh->GetNumberOfPoints(), output->GetNumberOfPoints());
 			ASSERT_EQ(vtkMesh->GetNumberOfCells(), output->GetNumberOfCells());
 			ASSERT_EQ(vtkMesh->GetPointData()->GetScalars("PointDoubleProperty")->GetNumberOfTuples(), pointDoubleArray->GetNumberOfTuples());
+			ASSERT_EQ(vtkMesh->GetPointData()->GetScalars("PointIntProperty")->GetNumberOfTuples(), pointIntArray->GetNumberOfTuples());
 			ASSERT_EQ(vtkMesh->GetCellData()->GetScalars("CellDoubleProperty")->GetNumberOfTuples(), cellDoubleArray->GetNumberOfTuples());
+			ASSERT_EQ(vtkMesh->GetCellData()->GetScalars("CellIntProperty")->GetNumberOfTuples(), cellIntArray->GetNumberOfTuples());
 
 			// Both OGS meshes should be identical
 			MeshLib::Mesh* newMesh = MeshLib::VtkMeshConverter::convertUnstructuredGrid(vtkMesh);