diff --git a/Testing/Code/IO/CMakeLists.txt b/Testing/Code/IO/CMakeLists.txt
index c591bafa550b3635eea6e1066dcb211e5a91c668..8ccf9ab209c27f21d2436cb8ffb61334ecb651ee 100644
--- a/Testing/Code/IO/CMakeLists.txt
+++ b/Testing/Code/IO/CMakeLists.txt
@@ -1159,6 +1159,17 @@ ADD_TEST(ioTvImageComplexDoubleTest ${IO_TESTS9}
     ${INPUTDATA}/multibandComplexDouble.hdr
 )
 
+ADD_TEST(ioTvVectorImageComplexIntoRealFloatTest ${IO_TESTS9}
+  otbVectorImageComplexIntoRealFloatTest
+    ${INPUTDATA}/multibandComplexFloat.hdr
+)
+
+ADD_TEST(ioTvVectorImageComplexIntoRealDoubleTest ${IO_TESTS9}
+  otbVectorImageComplexIntoRealDoubleTest
+    ${INPUTDATA}/multibandComplexDouble.hdr
+)
+
+
 # ---  otb::VectorImageReadWriteTest  ---
 ADD_TEST(ioTvVectorImageFileReaderWriterTest ${IO_TESTS9}
    --compare-image ${EPSILON_9}
diff --git a/Testing/Code/IO/otbComplexImageTests.cxx b/Testing/Code/IO/otbComplexImageTests.cxx
index 51e9cb4c9a54048226f767367ac5f46add525658..7bf945dd3e3b5d4649c9ad5a75eac85f7533e18f 100644
--- a/Testing/Code/IO/otbComplexImageTests.cxx
+++ b/Testing/Code/IO/otbComplexImageTests.cxx
@@ -115,7 +115,7 @@ int otbImageComplexGenericTest(int argc, char* argv[])
   pixel = reader->GetOutput()->GetPixel(index);
   std::cout << pixel << std::endl;
 
-  if (pixel != PixelType(4040,4041))
+  if (pixel != PixelType(2020,2021))
     {
     std::cout << "Found " << pixel << " should be " << PixelType(2020,2021) << std::endl;
     return EXIT_FAILURE;
@@ -134,3 +134,51 @@ int otbImageComplexDoubleTest(int argc, char* argv[])
 {
   return otbImageComplexGenericTest<double>(argc, argv);
 }
+
+
+template<class InternalType>
+int otbVectorImageComplexIntoRealGenericTest(int argc, char* argv[])
+{
+  typedef InternalType                    PixelType;
+  typedef otb::VectorImage<PixelType, 2>  ImageType;
+  typedef otb::ImageFileReader<ImageType> ReaderType;
+  typename ReaderType::Pointer reader = ReaderType::New();
+  reader->SetFileName(argv[1]);
+  reader->UpdateOutputInformation();
+  std::cout << reader->GetOutput()->GetNumberOfComponentsPerPixel() << std::endl;
+  itk::ImageIOBase::Pointer io = reader->GetImageIO();
+  std::cout << io << std::endl;
+  reader->Update();
+  typename ImageType::IndexType index;
+  index[0]=0;
+  index[1]=0;
+
+  typename ImageType::PixelType pixel = reader->GetOutput()->GetPixel(index);
+  std::cout << pixel << std::endl;
+
+  //Test value
+  if (reader->GetOutput()->GetNumberOfComponentsPerPixel() != 4)
+    {
+    std::cout << reader->GetOutput()->GetNumberOfComponentsPerPixel() << " bands instead of 4" << std::endl;
+    return EXIT_FAILURE;
+    }
+  if ((pixel[0] != 0) || (pixel[1] != 1) || (pixel[2] != 20000) || (pixel[3] != 20001))
+    {
+    std::cout << "Found " << pixel[0] << " should be " << 0 << std::endl;
+    std::cout << "Found " << pixel[1] << " should be " << 1 << std::endl;
+    std::cout << "Found " << pixel[2] << " should be " << 20000 << std::endl;
+    std::cout << "Found " << pixel[3] << " should be " << 20001 << std::endl;
+    return EXIT_FAILURE;
+    }
+  return EXIT_SUCCESS;
+}
+
+int otbVectorImageComplexIntoRealFloatTest(int argc, char* argv[])
+{
+  return otbVectorImageComplexIntoRealGenericTest<float>(argc, argv);
+}
+
+int otbVectorImageComplexIntoRealDoubleTest(int argc, char* argv[])
+{
+  return otbVectorImageComplexIntoRealGenericTest<double>(argc, argv);
+}
diff --git a/Testing/Code/IO/otbIOTests9.cxx b/Testing/Code/IO/otbIOTests9.cxx
index 78ce58e98c2a6f2d15e39df96723e25f58c0700a..8ffe676d914a0dc3eeae101d1f237243f8f2dfca 100644
--- a/Testing/Code/IO/otbIOTests9.cxx
+++ b/Testing/Code/IO/otbIOTests9.cxx
@@ -31,6 +31,8 @@ void RegisterTests()
   REGISTER_TEST(otbVectorImageComplexNew);
   REGISTER_TEST(otbVectorImageComplexFloatTest);
   REGISTER_TEST(otbVectorImageComplexDoubleTest);
+  REGISTER_TEST(otbVectorImageComplexIntoRealFloatTest);
+  REGISTER_TEST(otbVectorImageComplexIntoRealDoubleTest);
   REGISTER_TEST(otbImageComplexFloatTest);
   REGISTER_TEST(otbImageComplexDoubleTest);
   REGISTER_TEST(otbStreamingImageFilterTest);