diff --git a/tsg_data/Touc0702.nc b/tsg_data/Touc0702.nc
index 400530823f0fcc462d4ea5b787472a7385d27890..5def61e2ec195795ad2bddadc3f225053387fbd8 100644
Binary files a/tsg_data/Touc0702.nc and b/tsg_data/Touc0702.nc differ
diff --git a/tsg_util/corTsgLinear.m b/tsg_util/corTsgLinear.m
index bfe88cde6cf5bee806b4af129341d2e286e5de55..99bbb9021693d96224babe491fdea5a01eb9bb5e 100644
--- a/tsg_util/corTsgLinear.m
+++ b/tsg_util/corTsgLinear.m
@@ -22,20 +22,24 @@ PROBABLY_GOOD = get(tsg.qc.hash, 'PROBABLY_GOOD', 'code');
 PROBABLY_BAD  = get(tsg.qc.hash, 'PROBABLY_BAD',  'code');
 VALUE_CHANGED = get(tsg.qc.hash, 'VALUE_CHANGED', 'code');
 
+% intialisation
+% -------------
+if isempty( tsg.([PARA '_ADJUSTED']) )  
+  tsg.([PARA '_ADJUSTED'])       = tsg.(PARA);
+  tsg.([PARA '_ADJUSTED_QC'])    = tsg.([PARA '_QC']);
+end
+% If only calibration have been applied ERROR is empty
+% ---------------------------------------------------
+if isempty( tsg.([PARA '_ADJUSTED_ERROR']) )  
+  tsg.([PARA '_ADJUSTED_ERROR']) = NaN* ones(size(tsg.(PARA))); 
+end
+
 if dateMax > dateMin
-   
-  % intialisation
-  % -------------
-  if isempty( tsg.([PARA '_ADJUSTED']) )
-    msgbox( ['Variable ' PARA '_ADJUSTED should be initialise in updateTsgStruct'],...
-            'Function ''corTsgLinear''',...
-            'warn', 'modal');
-  end
  
-  % Find samples within TIME_WINDOWS with Good and probably Good QC
+  % Find samples within TIME_WINDOWS with Good, probably Good, , probably bad QC
   % ---------------------------------------------------------------
   ind = find( tsg.DAYD_SPL    >= dateMin &  tsg.DAYD_SPL    <= dateMax &...
-              tsg.([PARA '_SPL_QC']) <= PROBABLY_GOOD);
+              tsg.([PARA '_SPL_QC']) <= PROBABLY_BAD);
 
   if ~isempty(ind)
 
@@ -56,20 +60,21 @@ if dateMax > dateMin
         [p, S, mu] = polyfit( X, Y, 1);
 
         % The correction is applied to the TSG between dateMin and dateMax using
-        % a linear interpolation only on measurements with GOOD and
-        % PROBABLY_GOOD QC
+        % a linear interpolation only on measurements better than
+        % PROBABLY_BAD QC
         % ----------------------------------------------------------------------
         dtTsg = find( tsg.DAYD    >= dateMin  & tsg.DAYD <= dateMax &...
-          tsg.([PARA '_QC']) <= PROBABLY_GOOD);
+          tsg.([PARA '_QC']) <= PROBABLY_BAD);
 
         [tsg.([PARA '_ADJUSTED'])(dtTsg), tsg.([PARA '_ADJUSTED_ERROR'])(dtTsg)] =...
                             polyval( p, tsg.DAYD(dtTsg), S, mu);
         tsg.([PARA '_ADJUSTED'])(dtTsg) = ...
                             tsg.(PARA)(dtTsg) + tsg.([PARA '_ADJUSTED'])(dtTsg);
 
-        % VALUE_CHANGED code
-        % ------------------
-        tsg.([PARA '_ADJUSTED_QC'])(dtTsg) = VALUE_CHANGED;
+        % Line commented - We do not used anymore the VALUE_CHANGED code for 
+        % the ADJUSTED variable
+        % ------------------------------------------------------------------
+        % tsg.([PARA '_ADJUSTED_QC'])(dtTsg) = VALUE_CHANGED;
       end
     end
   end
diff --git a/tsg_util/corTsgMedian.m b/tsg_util/corTsgMedian.m
index 42e6c0d3c31e5f15245020acfa8154815b9fd3a6..7d3038bc700d8619cad36e7603a97567e08078fa 100644
--- a/tsg_util/corTsgMedian.m
+++ b/tsg_util/corTsgMedian.m
@@ -35,23 +35,28 @@ TIME_WINDOWS = tsg.cst.COR_TIME_WINDOWS;
 % Get PROBABLY_GOOD, PROBABLY_BAD and VALUE_CHANGED codes
 % -------------------------------------------------------
 PROBABLY_GOOD = get(tsg.qc.hash, 'PROBABLY_GOOD', 'code');
-PROBABLY_BAD  = get(tsg.qc.hash, 'PROBABLY_BAD', 'code');
+PROBABLY_BAD  = get(tsg.qc.hash, 'PROBABLY_BAD',  'code');
+BAD           = get(tsg.qc.hash, 'BAD',           'code');
 VALUE_CHANGED = get(tsg.qc.hash, 'VALUE_CHANGED', 'code');
-    
+
+% intialisation
+% -------------
+if isempty( tsg.([PARA '_ADJUSTED']) )  
+  tsg.([PARA '_ADJUSTED'])       = tsg.(PARA);
+  tsg.([PARA '_ADJUSTED_QC'])    = tsg.([PARA '_QC']);
+end
+% If only calibration have been applied ERROR is empty
+% ---------------------------------------------------
+if isempty( tsg.([PARA '_ADJUSTED_ERROR']) )  
+  tsg.([PARA '_ADJUSTED_ERROR']) = NaN* ones(size(tsg.(PARA))); 
+end
+
 % Create a structure with an NaN
 % No other solution, as I can't add a structure to an empty one
 % -------------------------------------------------------------
 cor = struct('DAYD', NaN, 'DIFF', NaN, 'ERROR', NaN, 'NVALUE', NaN);
 
 if dateMax > dateMin
-   
-  % intialisation
-  % -------------
-  if isempty( tsg.([PARA '_ADJUSTED']) )
-    msgbox( ['Variable ' PARA '_ADJUSTED should be initialise in updateTsgStruct'],...
-            'Function ''corTsgMedian''',...
-            'warn', 'modal');
-  end
   
   % Find the indices of samples within the time limits.
   % --------------------------------------------------
@@ -61,11 +66,11 @@ if dateMax > dateMin
   for i = 1:length(indSample)
 
 
-    % Find samples within TIME_WINDOWS with Good and probably Good QC
+    % Find samples within TIME_WINDOWS with Good, probably Good, probably Bad QC
     % ---------------------------------------------------------------
     ind = find( tsg.DAYD_SPL >= (tsg.DAYD_SPL(indSample(i)) - TIME_WINDOWS/2) &...
                 tsg.DAYD_SPL <= (tsg.DAYD_SPL(indSample(i)) + TIME_WINDOWS/2) &...
-                tsg.([PARA '_SPL_QC']) <= PROBABLY_GOOD);
+                tsg.([PARA '_SPL_QC']) <= PROBABLY_BAD);
     
     if ~isempty(ind)
       
@@ -100,7 +105,7 @@ if dateMax > dateMin
           % ------------------------------------------------------
           ind4 = find( A < meanA-3*stdA | A > meanA+3*stdA);
           if ~isempty( ind4 )
-            tsg.([PARA '_SPL_QC'])(ind(ind2(ind4))) = PROBABLY_BAD;
+            tsg.([PARA '_SPL_QC'])(ind(ind2(ind4))) = BAD;
           end
         end
       end
@@ -148,16 +153,17 @@ if dateMax > dateMin
     % PROBABLY_GOOD QC
     % ----------------------------------------------------------------------
     dtTsg = find( tsg.DAYD    >= dateMin  & tsg.DAYD <= dateMax &...
-                  tsg.([PARA '_QC']) <= PROBABLY_GOOD);
+                  tsg.([PARA '_QC']) <= PROBABLY_BAD);
 
     tsg.([PARA '_ADJUSTED'])(dtTsg)       = tsg.(PARA)(dtTsg) + ...
                                   interp1(cor.DAYD, cor.DIFF, tsg.DAYD(dtTsg));
     tsg.([PARA '_ADJUSTED_ERROR'])(dtTsg) = ...
                                  interp1(cor.DAYD, cor.ERROR, tsg.DAYD(dtTsg));
     
-    % VALUE_CHANGED code
-    % ------------------
-    tsg.([PARA '_ADJUSTED_QC'])(dtTsg)    = VALUE_CHANGED;
+    % Line commented - We do not used anymore the VALUE_CHANGED code for
+    % the ADJUSTED variable
+    % ------------------------------------------------------------------
+    % tsg.([PARA '_ADJUSTED_QC'])(dtTsg)    = VALUE_CHANGED;
         
   end
 
diff --git a/tsg_util/plot_Correction.m b/tsg_util/plot_Correction.m
index 084c6dcc8dfcfc04a03c365478ec3b6df7344ecd..dca6682154a2be697aa3dfe4eb4673b56557902a 100644
--- a/tsg_util/plot_Correction.m
+++ b/tsg_util/plot_Correction.m
@@ -39,18 +39,10 @@ if ~isempty( tsg.([PARA '_SPL']) )
   end
 end
 
-% Select the record with VALUE_CHANGED code
-% -----------------------------------------
-iVC = find( tsg.([PARA '_ADJUSTED_QC']) == VALUE_CHANGED );
-
-% Select only records corrected but not calibrated.
-% Records corrected and calibrated have the same QC code.
+% Select the records CORRECTED 
 % Records corrected have an error value
-% ------------------------------------------------------
-iERR = [];
-if iVC ~= 0
-  iERR = find( isnan( tsg.([PARA '_ADJUSTED_ERROR'])(iVC) ) == 0 );
-end
+% -------------------------------------------
+iERR = find( isnan(tsg.([PARA '_ADJUSTED_ERROR'])) == 0);
 
 % Plot the difference tsg.SSPS_ADJUSTED-tsg.SSPS on axe 1
 % but only for records that were corrected using Water Sample
@@ -58,8 +50,8 @@ end
 % -----------------------------------------------------------
 if iERR ~= 0
   plot_Tsg( hMainFig, hPlotAxes, 1,...
-            tsg.DAYD(iVC(iERR)),...
-            tsg.([PARA '_ADJUSTED'])(iVC(iERR))-tsg.(PARA)(iVC(iERR)),...
+            tsg.DAYD(iERR),...
+            tsg.([PARA '_ADJUSTED'])(iERR)-tsg.(PARA)(iERR),...
             [], [PARA '_ADJUSTED'],'b','none','.',1);
 end
 
@@ -98,11 +90,11 @@ plot_Tsg( hMainFig, hPlotAxes, 3, tsg.DAYD, tsg.(PARA),...
 % Plot TSG_ADJUSTED + ERROR on axe 3
 % -----------------------------------
 if iERR ~= 0
-  plot_Tsg( hMainFig, hPlotAxes, 3, tsg.DAYD(iVC(iERR)),...
-          tsg.([PARA '_ADJUSTED'])(iVC(iERR)) + tsg.([PARA '_ADJUSTED_ERROR'])(iVC(iERR)),...
+  plot_Tsg( hMainFig, hPlotAxes, 3, tsg.DAYD(iERR),...
+          tsg.([PARA '_ADJUSTED'])(iERR) + tsg.([PARA '_ADJUSTED_ERROR'])(iERR),...
           [], [PARA '_ADJUSTED'],'g','none','*',2);
-  plot_Tsg( hMainFig, hPlotAxes, 3, tsg.DAYD(iVC(iERR)),...
-          tsg.([PARA '_ADJUSTED'])(iVC(iERR)) - tsg.([PARA '_ADJUSTED_ERROR'])(iVC(iERR)),...
+  plot_Tsg( hMainFig, hPlotAxes, 3, tsg.DAYD(iERR),...
+          tsg.([PARA '_ADJUSTED'])(iERR) - tsg.([PARA '_ADJUSTED_ERROR'])(iERR),...
           [], [PARA '_ADJUSTED'],'g','none','*',2);
 end
 
diff --git a/tsg_util/updateAdjustedVariable.m b/tsg_util/updateAdjustedVariable.m
index 14bf2bb103308535380db28dd65d671dd9cf382a..94c8310fbb6015d925c0cd72d135512ad0bb2978 100644
--- a/tsg_util/updateAdjustedVariable.m
+++ b/tsg_util/updateAdjustedVariable.m
@@ -1,7 +1,7 @@
 function updateAdjustedVariable( hMainFig )
 %
-% Update adjusted SSPS, SSJT, and SSTP arrays once calibration has been
-% applied to these variable.
+% Update adjusted SSPS, SSJT, and SSTP arrays with calibrated
+% variables if they exist
 %
 % The TRICK :  
 % The programe test the variable ADJUSTED_ERROR as only records corrected
@@ -33,37 +33,56 @@ for i = 1 :3
   % -----------------------
   if ~isempty( tsg.(para5) )
 
-    % in case of the ADJUSTED_ERROR is not initialised
-    % ------------------------------------------------
-    if isempty( tsg.(para4) )
-      tsg.(para4) = NaN * ones(size(tsg.DAYD));
-    end
-
-    % Get Adjusted records that were not corrected using Water samples
-    % Only records corrected get error values
-    % ----------------------------------------------------------------
-    ind = find( isnan(tsg.(para4) ) == 1);
-
-    if ~isempty(tsg.(para1))
-
-      tsg.(para2)(ind) = tsg.(para1)(ind);
+    % If no correction have been made and CAL parameter exists, the
+    % ADJUSTED variable is set to CAL
+    % -------------------------------------------------------------
+    if isempty( tsg.(para4) ) && ~isempty( tsg.(para1) )
       
-      % I do not want that calibration get a VALUE_CHANGED code
-      %tsg.(para3)(ind) = VALUE_CHANGED;
+      tsg.(para2) = tsg.(para1);
+      tsg.(para3) = tsg.(para6);
+      
+    elseif  isempty( tsg.(para4) ) && isempty( tsg.(para1) )
 
-    else
+      % No Correction and no Calibrated records : ADJUSTED variable is
+      % empty
+      % --------------------------------------------------------------
+      tsg.(para2) = [];
+      tsg.(para3) = [];
+      
+    elseif ~isempty( tsg.(para4) )  % If ERROR not empty
 
-      % If the calibration has been canceled the ADJUSTED value is set to
-      % the raw value
-      % -----------------------------------------------------------------
-      tsg.(para2)(ind) = tsg.(para5)(ind);
-      tsg.(para3)(ind) = tsg.(para6)(ind);
+      % The QC code are set to the QC code of the raw variable
+      % ------------------------------------------------------
+      tsg.(para3) = tsg.(para6);
 
+      % Get Adjusted records that were not corrected using Water samples
+      % Only records corrected get error values
+      % ----------------------------------------------------------------
+      ind = find( isnan(tsg.(para4) ) == 1);
+      
+      % If the parameter has been calibrated
+      % ------------------------------------
+      if ~isempty( tsg.(para1) )
+        
+        % Adjusted records not corrected are set to the calibrated value
+        % --------------------------------------------------------------
+        if ~isempty( ind )
+          tsg.(para2)(ind) = tsg.(para1)(ind);
+        end
+        
+      else
+        
+        % Adjusted records not corrected are set to the raw value
+        % -------------------------------------------------------
+        if ~isempty( ind )
+          tsg.(para2)(ind) = tsg.(para5)(ind);
+        end
+      end
+      
     end
   end
-end
 
-% Save tsg application data
+ % Save tsg application data
 % --------------------------
 setappdata( hMainFig, 'tsg_data', tsg );
 
diff --git a/tsg_util/updateTsgStruct.m b/tsg_util/updateTsgStruct.m
index bfd7c1f297423e901aea703df4a94514ff2f23ae..88340ef0e62266945a10962ce151d270a27efc5b 100644
--- a/tsg_util/updateTsgStruct.m
+++ b/tsg_util/updateTsgStruct.m
@@ -43,28 +43,32 @@ if isempty(tsg.SPDC)
   tsg.SPDC = [tsg.SPDC';0];
 end
 
-% Initialise ADJUSTED variables if empty
-% --------------------------------------
+% Varaibles must exists
+% ---------------------
 for i = 1: nPARA
 
   para1 =  PARA(i,:);
-  para2 = [PARA(i,:) '_QC'];
-  para3 = [PARA(i,:) '_ADJUSTED'];
-  para4 = [PARA(i,:) '_ADJUSTED_QC'];
-  para5 = [PARA(i,:) '_ADJUSTED_ERROR'];
-
-  if isempty( tsg.(para3) ) && ~isempty( tsg.(para1) )
-    tsg.(para3) = tsg.(para1);
-    tsg.(para4) = tsg.(para2);
-    tsg.(para5) = NaN * ones( size( tsg.(para1) ));
-
-  elseif isempty( tsg.(para1) )
-
+  if isempty( tsg.(para1) )
     msgbox(['You must initialise the tsg.' PARA(i) ' variable'],...
-            'function ''updateTsgStruct''', ....
-            'warn', 'modal');
+      'function ''updateTsgStruct''', ....
+      'warn', 'modal');
+  end
+end
+
+% Empty variables filled with NaN
+% -------------------------------
+names = fieldnames( tsg );
+for i = 1: length(names)
+  para = char( names(i) );
+  if ~isstruct( tsg.(para) ) && ~isempty( tsg.(para) )
+    A = tsg.(para);
+    ind = find( isnan( A ) == 0 );
+    if isempty( ind )
+      tsg.(para) = [];
+    end
   end
 end
+
   
 % Initialise  'variables_LINCOEF'
 % -------------------------------
diff --git a/tsgqc_GUI.m b/tsgqc_GUI.m
index e6926aaaae8c85acd69069fb00710d9376e36855..9a93f30d4f8f803152448df20b480eef01978c54 100644
--- a/tsgqc_GUI.m
+++ b/tsgqc_GUI.m
@@ -1425,10 +1425,6 @@ errTsg = readTsgDataTsg( hMainFig, fullFileName);
     % Get tsg application data
     % ------------------------
     tsg = getappdata( hMainFig, 'tsg_data' );
-    
-    % pour test
-%     tsg.SSTP = [];
-%     setappdata( hMainFig, 'tsg_data', tsg );
    
     % Draw the 3 plots of the validation figure 
     % -----------------------------------------
@@ -1545,6 +1541,9 @@ errTsg = readTsgDataTsg( hMainFig, fullFileName);
     % ------------------------
     tsg = getappdata( hMainFig, 'tsg_data' );
         
+    % Emptied the CAL variables
+    % -------------------------
+    tsg.CNDC_CAL = [];
     tsg.SSPS_CAL = [];
     tsg.SSJT_CAL = [];
     tsg.SSTP_CAL = [];
@@ -1553,8 +1552,8 @@ errTsg = readTsgDataTsg( hMainFig, fullFileName);
     % --------------------------
     setappdata( hMainFig, 'tsg_data', tsg );
     
-    % Update the Adjusted variables (SSPS - SSJT) with calibrated records
-    % -------------------------------------------------------------------
+    % Update the Adjusted variables 
+    % -----------------------------
     updateAdjustedVariable( hMainFig );
     
     % Refresh plot #1
@@ -2343,11 +2342,10 @@ errTsg = readTsgDataTsg( hMainFig, fullFileName);
     % --------------------------------------------------
     PARA = tsg.preference.parameter;
 
-    % To cancel the correction set the ERROR to NaN then
+    % To cancel the correction set the ERROR to [] then
     % call updateAdjustedVariable.
     % --------------------------------------------------
-    tsg.([PARA '_ADJUSTED_ERROR']) = ...
-            NaN * ones( size(tsg.([PARA '_ADJUSTED_ERROR'])));
+    tsg.([PARA '_ADJUSTED_ERROR']) = [];
 
     % Save tsg data
     % -------------