diff --git a/src/fix_addforce.cpp b/src/fix_addforce.cpp
index 03445312a2f07d4ebe35757e777eded3975642fc..b51b2dcc0de84e1cc81192d75b1f0bda9ead64db 100644
--- a/src/fix_addforce.cpp
+++ b/src/fix_addforce.cpp
@@ -258,15 +258,15 @@ void FixAddForce::post_force(int vflag)
     modify->clearstep_compute();
 
     if (xstyle == EQUAL) xvalue = input->variable->compute_equal(xvar);
-    else if (xstyle == ATOM)
+    else if (xstyle == ATOM && sforce)
       input->variable->compute_atom(xvar,igroup,&sforce[0][0],4,0);
     if (ystyle == EQUAL) yvalue = input->variable->compute_equal(yvar);
-    else if (ystyle == ATOM) 
+    else if (ystyle == ATOM && sforce) 
       input->variable->compute_atom(yvar,igroup,&sforce[0][1],4,0);
     if (zstyle == EQUAL) zvalue = input->variable->compute_equal(zvar);
-    else if (zstyle == ATOM)
+    else if (zstyle == ATOM && sforce)
       input->variable->compute_atom(zvar,igroup,&sforce[0][2],4,0);
-    if (estyle == ATOM)
+    if (estyle == ATOM && sforce)
       input->variable->compute_atom(evar,igroup,&sforce[0][3],4,0);
 
     modify->addstep_compute(update->ntimestep + 1);
diff --git a/src/fix_ave_atom.cpp b/src/fix_ave_atom.cpp
index ee2cf2b2d0cb2188a6557028546ef8494bf43cb3..a6f81a72b37b135cbac6ad5dd25dec5e307d380d 100644
--- a/src/fix_ave_atom.cpp
+++ b/src/fix_ave_atom.cpp
@@ -351,7 +351,7 @@ void FixAveAtom::end_of_step()
 
     // evaluate atom-style variable
 
-    } else if (which[m] == VARIABLE)
+    } else if (which[m] == VARIABLE && array)
       input->variable->compute_atom(n,igroup,&array[0][m],nvalues,1);
   }
 
diff --git a/src/fix_efield.cpp b/src/fix_efield.cpp
index f60522b56f90ad42458fed010f28716ab31b3f77..5a5048a871729c0d65c8bda8dc6b44ce585cc396 100644
--- a/src/fix_efield.cpp
+++ b/src/fix_efield.cpp
@@ -184,13 +184,13 @@ void FixEfield::post_force(int vflag)
     modify->clearstep_compute();
 
     if (xstyle == EQUAL) ex = qe2f * input->variable->compute_equal(xvar);
-    else if (xstyle == ATOM)
+    else if (xstyle == ATOM && efield)
       input->variable->compute_atom(xvar,igroup,&efield[0][0],3,0);
     if (ystyle == EQUAL) ey = qe2f * input->variable->compute_equal(yvar);
-    else if (ystyle == ATOM)
+    else if (ystyle == ATOM && efield)
       input->variable->compute_atom(yvar,igroup,&efield[0][1],3,0);
     if (zstyle == EQUAL) ez = qe2f * input->variable->compute_equal(zvar);
-    else if (zstyle == ATOM)
+    else if (zstyle == ATOM && efield)
       input->variable->compute_atom(zvar,igroup,&efield[0][2],3,0);
 
     modify->addstep_compute(update->ntimestep + 1);
diff --git a/src/fix_move.cpp b/src/fix_move.cpp
index d14908d9c229b110c84652a36dafc2f850c8239d..43f5df7d24a47d821c3fa64b7f8299eeed441b35 100644
--- a/src/fix_move.cpp
+++ b/src/fix_move.cpp
@@ -576,27 +576,33 @@ void FixMove::initial_integrate(int vflag)
 
     if (xvarstr) {
       if (xvarstyle == EQUAL) dx = input->variable->compute_equal(xvar);
-      else input->variable->compute_atom(xvar,igroup,&displace[0][0],3,0);
+      else if (displace)
+	input->variable->compute_atom(xvar,igroup,&displace[0][0],3,0);
     }
     if (yvarstr) {
       if (yvarstyle == EQUAL) dy = input->variable->compute_equal(yvar);
-      else input->variable->compute_atom(yvar,igroup,&displace[0][1],3,0);
+      else if (displace)
+	input->variable->compute_atom(yvar,igroup,&displace[0][1],3,0);
     }
     if (zvarstr) {
       if (zvarstyle == EQUAL) dz = input->variable->compute_equal(zvar);
-      else input->variable->compute_atom(zvar,igroup,&displace[0][2],3,0);
+      else if (displace)
+	input->variable->compute_atom(zvar,igroup,&displace[0][2],3,0);
     }
     if (vxvarstr) {
       if (vxvarstyle == EQUAL) vx = input->variable->compute_equal(vxvar);
-      else input->variable->compute_atom(vxvar,igroup,&velocity[0][0],3,0);
+      else if (velocity)
+	input->variable->compute_atom(vxvar,igroup,&velocity[0][0],3,0);
     }
     if (vyvarstr) {
       if (vyvarstyle == EQUAL) vy = input->variable->compute_equal(vyvar);
-      else input->variable->compute_atom(vyvar,igroup,&velocity[0][1],3,0);
+      else if (velocity)
+	input->variable->compute_atom(vyvar,igroup,&velocity[0][1],3,0);
     }
     if (vzvarstr) {
       if (vzvarstyle == EQUAL) vz = input->variable->compute_equal(vzvar);
-      else input->variable->compute_atom(vzvar,igroup,&velocity[0][2],3,0);
+      else if (velocity)
+	input->variable->compute_atom(vzvar,igroup,&velocity[0][2],3,0);
     }
 
     modify->addstep_compute(update->ntimestep + 1);
diff --git a/src/fix_setforce.cpp b/src/fix_setforce.cpp
index d32c8145f2ecb5703e22875db437920e6d6f4597..0f137e87dbedad1e47e358e378f06758232e7f72 100644
--- a/src/fix_setforce.cpp
+++ b/src/fix_setforce.cpp
@@ -245,13 +245,13 @@ void FixSetForce::post_force(int vflag)
     modify->clearstep_compute();
 
     if (xstyle == EQUAL) xvalue = input->variable->compute_equal(xvar);
-    else if (xstyle == ATOM)
+    else if (xstyle == ATOM && sforce)
       input->variable->compute_atom(xvar,igroup,&sforce[0][0],3,0);
     if (ystyle == EQUAL) yvalue = input->variable->compute_equal(yvar);
-    else if (ystyle == ATOM) 
+    else if (ystyle == ATOM && sforce) 
       input->variable->compute_atom(yvar,igroup,&sforce[0][1],3,0);
     if (zstyle == EQUAL) zvalue = input->variable->compute_equal(zvar);
-    else if (zstyle == ATOM)
+    else if (zstyle == ATOM && sforce)
       input->variable->compute_atom(zvar,igroup,&sforce[0][2],3,0);
 
     modify->addstep_compute(update->ntimestep + 1);
diff --git a/src/velocity.cpp b/src/velocity.cpp
index 77545a86fc873b45f9ff3ce4cf92b9c0a9fab017..efef0c9653cf4aef4c22f334b85600910d3e3e87 100644
--- a/src/velocity.cpp
+++ b/src/velocity.cpp
@@ -465,13 +465,13 @@ void Velocity::set(int narg, char **arg)
 
   } else {
     if (xstyle == EQUAL) vx = input->variable->compute_equal(xvar);
-    else if (xstyle == ATOM)
+    else if (xstyle == ATOM && vfield)
       input->variable->compute_atom(xvar,igroup,&vfield[0][0],3,0);
     if (ystyle == EQUAL) vy = input->variable->compute_equal(yvar);
-    else if (ystyle == ATOM)
+    else if (ystyle == ATOM && vfield)
       input->variable->compute_atom(yvar,igroup,&vfield[0][1],3,0);
     if (zstyle == EQUAL) vz = input->variable->compute_equal(zvar);
-    else if (zstyle == ATOM)
+    else if (zstyle == ATOM && vfield)
       input->variable->compute_atom(zvar,igroup,&vfield[0][2],3,0);
 
     for (int i = 0; i < nlocal; i++)