diff --git a/crpptbx/D3D/gdat_d3d.m b/crpptbx/D3D/gdat_d3d.m
index 15bd5c09a3170c61fd8a1240c77ba4a9f3233e06..785563bdaee7f24c254c03eaae119ce4523326bd 100644
--- a/crpptbx/D3D/gdat_d3d.m
+++ b/crpptbx/D3D/gdat_d3d.m
@@ -256,9 +256,22 @@ if strcmp(mapping_for_d3d.method,'signal')
   else
     mapping_for_d3d.expression{1} = gdat_data.gdat_params.source;
   end
-  gdat_data.gdat_params.source = mapping_for_d3d.expression{1};
-  [shoteff,stat] = mdsopen(['atlas.gat.com::' mapping_for_d3d.expression{1}],shot);
-  if shoteff~=shot
+  shoteff = [];
+  aa=mdscurrent;
+  if ~isempty(shot)
+    if isempty(aa) && mdsremotelist==0 && any(findstr('epfl',getenv('HOSTNAME')))
+      mdsconnect('localhost:5556');
+      aa=mdscurrent;
+    end
+    if strmatch('localhost',aa)
+      [shoteff,stat] = mdsopen(mapping_for_d3d.expression{1},shot);
+    else
+      [shoteff,stat] = mdsopen(['atlas.gat.com::' mapping_for_d3d.expression{1}],shot);
+    end
+  else
+    shot = mdsvalue('$shot');
+  end
+  if ~isempty(shoteff) && shoteff~=shot
     disp('cannot open shot');
     return
   end