diff --git a/Modules/Applications/AppOpticalCalibration/test/CMakeLists.txt b/Modules/Applications/AppOpticalCalibration/test/CMakeLists.txt
index fc477b8e75fee4171dfa6f8520cf69af69926dc2..8209470e874f404a53c14336a1b8f3cdb97caa42 100644
--- a/Modules/Applications/AppOpticalCalibration/test/CMakeLists.txt
+++ b/Modules/Applications/AppOpticalCalibration/test/CMakeLists.txt
@@ -30,6 +30,17 @@ otb_test_application(NAME apTvRaOpticalCalibration_QuickbirdXS
                              ${BASELINE}/raTvRadianceToReflectanceImageFilterAutoQuickbirdXS.tif
                              ${TEMP}/apTvRaOpticalCalibration_QuickbirdXS.tif )
 
+otb_test_application(NAME apTvRaOpticalCalibration_SolarDistance
+                     APP  OpticalCalibration
+                     OPTIONS -in ${INPUTDATA}/QB_MUL_ROI_1000_100.tif
+                             -level toa
+                             -clamp false
+                             -acqui.solardistance 0.9987593
+                             -out ${TEMP}/apTvRaOpticalCalibration_SolarDistance.tif
+                     VALID   --compare-image ${EPSILON_7}
+                             ${BASELINE}/raTvRadianceToReflectanceImageFilterAutoQuickbirdXS.tif
+                             ${TEMP}/apTvRaOpticalCalibration_QuickbirdXS.tif )
+
 otb_test_application(NAME apTvRaOpticalCalibration_WV2PAN
                      APP  OpticalCalibration
                      OPTIONS -in ${INPUTDATA}/WV2_PAN_ROI_1000_100.tif
diff --git a/Modules/Radiometry/OpticalCalibration/test/otbImageToReflectanceImageFilter.cxx b/Modules/Radiometry/OpticalCalibration/test/otbImageToReflectanceImageFilter.cxx
index 350c5b44a7c08655510dc30ee343b93977189140..e90de24a6dda54df1a4e8cfe722dd5d9f77100da 100644
--- a/Modules/Radiometry/OpticalCalibration/test/otbImageToReflectanceImageFilter.cxx
+++ b/Modules/Radiometry/OpticalCalibration/test/otbImageToReflectanceImageFilter.cxx
@@ -35,12 +35,14 @@ int otbImageToReflectanceImageFilter(int itkNotUsed(argc), char * argv[])
   int          day = 1;
   int          month = 1;
   double solarDistance = 1.;
+  char fluxMode[] = "0";
+  char solarDistMode[] = "1";
 
-  if (atoi(argv[16]) == 0)
+  if (strcmp(argv[16], fluxMode) == 0)
     {
     flux = static_cast<double>(atof(argv[17]));
     }
-  else if (atoi(argv[16]) == 1)
+  else if (strcmp(argv[16], solarDistMode) == 0)
     {
     solarDistance = static_cast<double>(atof(argv[17]));
     }
@@ -90,11 +92,11 @@ int otbImageToReflectanceImageFilter(int itkNotUsed(argc), char * argv[])
   filter->SetSolarIllumination(solarIllumination);
   filter->SetUseClamp(false);
   
-  if (atoi(argv[16]) == 0)
+  if (strcmp(argv[16], fluxMode) == 0)
     {
     filter->SetFluxNormalizationCoefficient(flux);
     }
-  else if (atoi(argv[16]) == 1)
+  else if (strcmp(argv[16], solarDistMode) == 0)
     {
     filter->SetSolarDistance(solarDistance);
     }
diff --git a/Modules/Radiometry/OpticalCalibration/test/otbRadianceToReflectanceImageFilter.cxx b/Modules/Radiometry/OpticalCalibration/test/otbRadianceToReflectanceImageFilter.cxx
index 49a4232424656c869715ec345ccb8ea3042c74af..8d48989386dac47411638cfda9c78cf4ed4eabe5 100644
--- a/Modules/Radiometry/OpticalCalibration/test/otbRadianceToReflectanceImageFilter.cxx
+++ b/Modules/Radiometry/OpticalCalibration/test/otbRadianceToReflectanceImageFilter.cxx
@@ -35,12 +35,14 @@ int otbRadianceToReflectanceImageFilter(int itkNotUsed(argc), char * argv[])
   int          day = 1;
   int          month = 1;
   double       solarDistance = 1.;
+  char fluxMode[] = "0";
+  char solarDistMode[] = "1";
   
-  if (atoi(argv[8]) == 0)
+  if (strcmp(argv[8], fluxMode) == 0)
     {
     flux = static_cast<double>(atof(argv[9]));
     }
-  else if (atoi(argv[8]) == 1)
+  else if (strcmp(argv[8], solarDistMode) == 0)
     {
     solarDistance = static_cast<double>(atof(argv[9]));
     }
@@ -80,11 +82,11 @@ int otbRadianceToReflectanceImageFilter(int itkNotUsed(argc), char * argv[])
   filter->SetZenithalSolarAngle(angle);
   filter->SetSolarIllumination(solarIllumination);
   filter->SetUseClamp(false);
-  if (atoi(argv[8]) == 0)
+  if (strcmp(argv[8], fluxMode) == 0)
     {
     filter->SetFluxNormalizationCoefficient(flux);
     }
-  else if (atoi(argv[8]) == 1)
+  else if (strcmp(argv[8], solarDistMode) == 0)
     {
     filter->SetSolarDistance(solarDistance);
     }
diff --git a/Modules/Radiometry/OpticalCalibration/test/otbReflectanceToImageImageFilter.cxx b/Modules/Radiometry/OpticalCalibration/test/otbReflectanceToImageImageFilter.cxx
index f8f8a3ff56c69ce1405502752ce8e3afc8964ede..3a5db5e129b27a9e548bbe4c51a0cfe4cbd633ae 100644
--- a/Modules/Radiometry/OpticalCalibration/test/otbReflectanceToImageImageFilter.cxx
+++ b/Modules/Radiometry/OpticalCalibration/test/otbReflectanceToImageImageFilter.cxx
@@ -39,12 +39,14 @@ int otbReflectanceToImageImageFilter(int itkNotUsed(argc), char * argv[])
   int          day = 1;
   int          month = 1;
   double       solarDistance = 1.0;
+  char fluxMode[] = "0";
+  char solarDistMode[] = "1";
 
-  if (atoi(argv[16]) == 0)
+  if (strcmp(argv[16], fluxMode) == 0)
     {
     flux = static_cast<double>(atof(argv[17]));
     }
-  else if (atoi(argv[16]) == 1)
+  else if (strcmp(argv[16], solarDistMode) == 0)
     {
     solarDistance = static_cast<double>(atof(argv[17]));
     }
@@ -93,11 +95,11 @@ int otbReflectanceToImageImageFilter(int itkNotUsed(argc), char * argv[])
   filter->SetZenithalSolarAngle(angle);
   filter->SetSolarIllumination(solarIllumination);
 
-  if (atoi(argv[16]) == 0)
+  if (strcmp(argv[16], fluxMode) == 0)
     {
     filter->SetFluxNormalizationCoefficient(flux);
     }
-  else if (atoi(argv[16]) == 1)
+  else if (strcmp(argv[16], solarDistMode) == 0)
     {
     filter->SetSolarDistance(solarDistance);
     }
diff --git a/Modules/Radiometry/OpticalCalibration/test/otbReflectanceToRadianceImageFilter.cxx b/Modules/Radiometry/OpticalCalibration/test/otbReflectanceToRadianceImageFilter.cxx
index 4767733bef9470fd8e4784e931548e0030f99295..d59dd8fdc398f68f57804fa6ff6ba4aaa2ebaf76 100644
--- a/Modules/Radiometry/OpticalCalibration/test/otbReflectanceToRadianceImageFilter.cxx
+++ b/Modules/Radiometry/OpticalCalibration/test/otbReflectanceToRadianceImageFilter.cxx
@@ -34,12 +34,14 @@ int otbReflectanceToRadianceImageFilter(int itkNotUsed(argc), char * argv[])
   int          day = 1;
   int          month = 1;
   double       solarDistance = 1.;
+  char fluxMode[] = "0";
+  char solarDistMode[] = "1";
 
-  if (atoi(argv[8]) == 0)
+  if (strcmp(argv[8], fluxMode) == 0)
     {
     flux = static_cast<double>(atof(argv[9]));
     }
-  else if (atoi(argv[8]) == 1)
+  else if (strcmp(argv[8], solarDistMode) == 0)
     {
     solarDistance = static_cast<double>(atof(argv[9]));
     }
@@ -79,11 +81,11 @@ int otbReflectanceToRadianceImageFilter(int itkNotUsed(argc), char * argv[])
   filter->SetZenithalSolarAngle(angle);
   filter->SetSolarIllumination(solarIllumination);
   filter->SetUseClamp(false);
-  if (atoi(argv[8]) == 0)
+  if (strcmp(argv[8], fluxMode) == 0)
     {
     filter->SetFluxNormalizationCoefficient(flux);
     }
-  else if (atoi(argv[8]) == 1)
+  else if (strcmp(argv[8], solarDistMode) == 0)
     {
     filter->SetSolarDistance(solarDistance);
     }