diff --git a/src/GRANULAR/fix_gran_diag.cpp b/src/GRANULAR/fix_gran_diag.cpp
index 8c69d69d66ac0fe0de646dc660e8a28c6aa48078..8d7ce98cca2509f4225d74c08cbd1aed90b26f09 100644
--- a/src/GRANULAR/fix_gran_diag.cpp
+++ b/src/GRANULAR/fix_gran_diag.cpp
@@ -163,7 +163,7 @@ void FixGranDiag::end_of_step()
 
   // set bottom of box for binning purposes
 
-  boxzlo = domain->boxzlo;
+  boxzlo = domain->boxlo[2];
 
   // update ghost atom info
   // else ghost x/v is out-of-date at end of timestep
diff --git a/src/GRANULAR/fix_pour.cpp b/src/GRANULAR/fix_pour.cpp
index 1381e15a5a482b40cdbc4df47523d784ded77218..a9f474769eb5e114d32704576b5b82ffcbec648c 100644
--- a/src/GRANULAR/fix_pour.cpp
+++ b/src/GRANULAR/fix_pour.cpp
@@ -132,9 +132,9 @@ FixPour::FixPour(LAMMPS *lmp, int narg, char **arg) :
     yhi = ((RegBlock *) domain->regions[iregion])->yhi;
     zlo = ((RegBlock *) domain->regions[iregion])->zlo;
     zhi = ((RegBlock *) domain->regions[iregion])->zhi;
-    if (xlo < domain->boxxlo || xhi > domain->boxxhi || 
-	ylo < domain->boxylo || yhi > domain->boxyhi || 
-	zlo < domain->boxzlo || zhi > domain->boxzhi)
+    if (xlo < domain->boxlo[0] || xhi > domain->boxhi[0] || 
+	ylo < domain->boxlo[1] || yhi > domain->boxhi[1] || 
+	zlo < domain->boxlo[2] || zhi > domain->boxhi[2])
       error->all("Insertion region extends outside simulation box");
   } else if (strcmp(domain->regions[iregion]->style,"cylinder") == 0) {
     region_style = 2;
@@ -146,9 +146,9 @@ FixPour::FixPour(LAMMPS *lmp, int narg, char **arg) :
     zhi = ((RegCylinder *) domain->regions[iregion])->hi;
     if (axis != 'z')
       error->all("Must use a z-axis cylinder with fix pour");
-    if (xc-rc < domain->boxxlo || xc+rc > domain->boxxhi || 
-	yc-rc < domain->boxylo || yc+rc > domain->boxyhi || 
-	zlo < domain->boxzlo || zhi > domain->boxzhi)
+    if (xc-rc < domain->boxlo[0] || xc+rc > domain->boxhi[0] || 
+	yc-rc < domain->boxlo[1] || yc+rc > domain->boxhi[1] || 
+	zlo < domain->boxlo[2] || zhi > domain->boxhi[2])
       error->all("Insertion region extends outside simulation box");
   } else error->all("Must use a block or cylinder region with fix pour");
 
@@ -446,11 +446,11 @@ void FixPour::pre_exchange()
     if (coord[0] >= sublo[0] && coord[0] < subhi[0] &&
 	coord[1] >= sublo[1] && coord[1] < subhi[1] &&
 	coord[2] >= sublo[2] && coord[2] < subhi[2]) flag = 1;
-    else if (force->dimension == 3 && coord[2] >= domain->boxzhi &&
+    else if (force->dimension == 3 && coord[2] >= domain->boxhi[2] &&
 	     comm->myloc[2] == comm->procgrid[2]-1 &&
 	     coord[0] >= sublo[0] && coord[0] < subhi[0] &&
 	     coord[1] >= sublo[1] && coord[1] < subhi[1]) flag = 1;
-    else if (force->dimension == 2 && coord[1] >= domain->boxyhi &&
+    else if (force->dimension == 2 && coord[1] >= domain->boxhi[1] &&
 	     comm->myloc[1] == comm->procgrid[1]-1 &&
 	     coord[0] >= sublo[0] && coord[0] < subhi[0]) flag = 1;
 
diff --git a/src/XTC/dump_xtc.cpp b/src/XTC/dump_xtc.cpp
index 1cd662d13222eb123ae3d8915d9eee873710c588..b553d435dd4fe0053cbd07432711546ec152712c 100644
--- a/src/XTC/dump_xtc.cpp
+++ b/src/XTC/dump_xtc.cpp
@@ -150,9 +150,9 @@ void DumpXTC::write_header(int n)
   // cell basis vectors
 
   float zero = 0.0;
-  float xdim = domain->boxxhi - domain->boxxlo;
-  float ydim = domain->boxyhi - domain->boxylo;
-  float zdim = domain->boxzhi - domain->boxzlo;
+  float xdim = domain->boxhi[0] - domain->boxlo[0];
+  float ydim = domain->boxhi[1] - domain->boxlo[1];
+  float zdim = domain->boxhi[2] - domain->boxlo[2];
 
   xdr_float(&xd,&xdim); xdr_float(&xd,&zero); xdr_float(&xd,&zero);
   xdr_float(&xd,&zero); xdr_float(&xd,&ydim); xdr_float(&xd,&zero);
diff --git a/src/create_box.cpp b/src/create_box.cpp
index 570b125ec8d9fcb6a482cbdf19af87877bef5c1e..d947854bfc3788799762ac0a75b8abc21b0896e2 100644
--- a/src/create_box.cpp
+++ b/src/create_box.cpp
@@ -61,22 +61,22 @@ void CreateBox::command(int narg, char **arg)
   //   set simulation domain params from prism params
 
   if (strcmp(domain->regions[iregion]->style,"prism") != 0) {
-    domain->boxxlo = domain->regions[iregion]->extent_xlo;
-    domain->boxxhi = domain->regions[iregion]->extent_xhi;
-    domain->boxylo = domain->regions[iregion]->extent_ylo;
-    domain->boxyhi = domain->regions[iregion]->extent_yhi;
-    domain->boxzlo = domain->regions[iregion]->extent_zlo;
-    domain->boxzhi = domain->regions[iregion]->extent_zhi;
+    domain->boxlo[0] = domain->regions[iregion]->extent_xlo;
+    domain->boxhi[0] = domain->regions[iregion]->extent_xhi;
+    domain->boxlo[1] = domain->regions[iregion]->extent_ylo;
+    domain->boxhi[1] = domain->regions[iregion]->extent_yhi;
+    domain->boxlo[2] = domain->regions[iregion]->extent_zlo;
+    domain->boxhi[2] = domain->regions[iregion]->extent_zhi;
 
   } else {
     domain->triclinic = 1;
     RegPrism *region = (RegPrism *) domain->regions[iregion];
-    domain->boxxlo = region->xlo;
-    domain->boxxhi = region->xhi;
-    domain->boxylo = region->ylo;
-    domain->boxyhi = region->yhi;
-    domain->boxzlo = region->zlo;
-    domain->boxzhi = region->zhi;
+    domain->boxlo[0] = region->xlo;
+    domain->boxhi[0] = region->xhi;
+    domain->boxlo[1] = region->ylo;
+    domain->boxhi[1] = region->yhi;
+    domain->boxlo[2] = region->zlo;
+    domain->boxhi[2] = region->zhi;
     domain->xy = region->xy;
     domain->xz = region->xz;
     domain->yz = region->yz;
diff --git a/src/domain.cpp b/src/domain.cpp
index 99ae3a4d1f1fe5f19e8287f5306d839b9e504323..224be041e16479854709fc8f8b48a57444dc35d8 100644
--- a/src/domain.cpp
+++ b/src/domain.cpp
@@ -59,8 +59,8 @@ Domain::Domain(LAMMPS *lmp) : Pointers(lmp)
   boundary[2][0] = boundary[2][1] = 0;
 
   triclinic = 0;
-  boxxlo = boxylo = boxzlo = -0.5;
-  boxxhi = boxyhi = boxzhi = 0.5;
+  boxlo[0] = boxlo[1] = boxlo[2] = -0.5;
+  boxhi[0] = boxhi[1] = boxhi[2] = 0.5;
   xy = xz = yz = 0.0;
 
   prd_lamda[0] = prd_lamda[1] = prd_lamda[2] = 1.0;
@@ -103,7 +103,7 @@ void Domain::set_initial_box()
 {
   // error checks for orthogonal and triclinic domains
 
-  if (boxxlo >= boxxhi || boxylo >= boxyhi || boxzlo >= boxzhi)
+  if (boxlo[0] >= boxhi[0] || boxlo[1] >= boxhi[1] || boxlo[2] >= boxhi[2])
     error->one("Box bounds are invalid");
 
   if (triclinic) {
@@ -116,30 +116,30 @@ void Domain::set_initial_box()
     if (yz != 0.0 && (!yperiodic || !zperiodic))
       error->all("Triclinic box must be periodic in skewed dimensions");
 
-    if (fabs(xy/(boxyhi-boxylo)) > 0.5)
+    if (fabs(xy/(boxhi[1]-boxlo[1])) > 0.5)
       error->all("Triclinic box skew is too large");
-    if (fabs(xz/(boxzhi-boxzlo)) > 0.5)
+    if (fabs(xz/(boxhi[2]-boxlo[2])) > 0.5)
       error->all("Triclinic box skew is too large");
-    if (fabs(yz/(boxzhi-boxzlo)) > 0.5)
+    if (fabs(yz/(boxhi[2]-boxlo[2])) > 0.5)
       error->all("Triclinic box skew is too large");
   }
 
   // adjust box lo/hi for shrink-wrapped dims
 
-  if (boundary[0][0] == 2) boxxlo -= SMALL;
-  else if (boundary[0][0] == 3) minxlo = boxxlo;
-  if (boundary[0][1] == 2) boxxhi += SMALL;
-  else if (boundary[0][1] == 3) minxhi = boxxhi;
+  if (boundary[0][0] == 2) boxlo[0] -= SMALL;
+  else if (boundary[0][0] == 3) minxlo = boxlo[0];
+  if (boundary[0][1] == 2) boxhi[0] += SMALL;
+  else if (boundary[0][1] == 3) minxhi = boxhi[0];
 
-  if (boundary[1][0] == 2) boxylo -= SMALL;
-  else if (boundary[1][0] == 3) minylo = boxylo;
-  if (boundary[1][1] == 2) boxyhi += SMALL;
-  else if (boundary[1][1] == 3) minyhi = boxyhi;
+  if (boundary[1][0] == 2) boxlo[1] -= SMALL;
+  else if (boundary[1][0] == 3) minylo = boxlo[1];
+  if (boundary[1][1] == 2) boxhi[1] += SMALL;
+  else if (boundary[1][1] == 3) minyhi = boxhi[1];
 
-  if (boundary[2][0] == 2) boxzlo -= SMALL;
-  else if (boundary[2][0] == 3) minzlo = boxzlo;
-  if (boundary[2][1] == 2) boxzhi += SMALL;
-  else if (boundary[2][1] == 3) minzhi = boxzhi;
+  if (boundary[2][0] == 2) boxlo[2] -= SMALL;
+  else if (boundary[2][0] == 3) minzlo = boxlo[2];
+  if (boundary[2][1] == 2) boxhi[2] += SMALL;
+  else if (boundary[2][1] == 3) minzhi = boxhi[2];
 }
 
 /* ----------------------------------------------------------------------
@@ -149,17 +149,14 @@ void Domain::set_initial_box()
 
 void Domain::set_global_box()
 {
-  prd[0] = xprd = boxxhi - boxxlo;
-  prd[1] = yprd = boxyhi - boxylo;
-  prd[2] = zprd = boxzhi - boxzlo;
+  prd[0] = xprd = boxhi[0] - boxlo[0];
+  prd[1] = yprd = boxhi[1] - boxlo[1];
+  prd[2] = zprd = boxhi[2] - boxlo[2];
 
   xprd_half = 0.5*xprd;
   yprd_half = 0.5*yprd;
   zprd_half = 0.5*zprd;
 
-  boxlo[0] = boxxlo;  boxlo[1] = boxylo;  boxlo[2] = boxzlo;
-  boxhi[0] = boxxhi;  boxhi[1] = boxyhi;  boxhi[2] = boxzhi;
-
   if (triclinic) {
     h[0] = xprd;
     h[1] = yprd;
@@ -286,25 +283,25 @@ void Domain::reset_box()
     // if set, observe min box size settings
     
     if (xperiodic == 0) {
-      if (boundary[0][0] == 2) boxxlo = -all[0][0] - SMALL;
-      else if (boundary[0][0] == 3) boxxlo = MIN(-all[0][0]-SMALL,minxlo);
-      if (boundary[0][1] == 2) boxxhi = all[0][1] + SMALL;
-      else if (boundary[0][1] == 3) boxxhi = MAX(all[0][1]+SMALL,minxhi);
-      if (boxxlo > boxxhi) error->all("Illegal simulation box");
+      if (boundary[0][0] == 2) boxlo[0] = -all[0][0] - SMALL;
+      else if (boundary[0][0] == 3) boxlo[0] = MIN(-all[0][0]-SMALL,minxlo);
+      if (boundary[0][1] == 2) boxhi[0] = all[0][1] + SMALL;
+      else if (boundary[0][1] == 3) boxhi[0] = MAX(all[0][1]+SMALL,minxhi);
+      if (boxlo[0] > boxhi[0]) error->all("Illegal simulation box");
     }
     if (yperiodic == 0) {
-      if (boundary[1][0] == 2) boxylo = -all[1][0] - SMALL;
-      else if (boundary[1][0] == 3) boxylo = MIN(-all[1][0]-SMALL,minylo);
-      if (boundary[1][1] == 2) boxyhi = all[1][1] + SMALL;
-      else if (boundary[1][1] == 3) boxyhi = MAX(all[1][1]+SMALL,minyhi);
-      if (boxylo > boxyhi) error->all("Illegal simulation box");
+      if (boundary[1][0] == 2) boxlo[1] = -all[1][0] - SMALL;
+      else if (boundary[1][0] == 3) boxlo[1] = MIN(-all[1][0]-SMALL,minylo);
+      if (boundary[1][1] == 2) boxhi[1] = all[1][1] + SMALL;
+      else if (boundary[1][1] == 3) boxhi[1] = MAX(all[1][1]+SMALL,minyhi);
+      if (boxlo[1] > boxhi[1]) error->all("Illegal simulation box");
     }
     if (zperiodic == 0) {
-      if (boundary[2][0] == 2) boxzlo = -all[2][0] - SMALL;
-      else if (boundary[2][0] == 3) boxzlo = MIN(-all[2][0]-SMALL,minzlo);
-      if (boundary[2][1] == 2) boxzhi = all[2][1] + SMALL;
-      else if (boundary[2][1] == 3) boxzhi = MAX(all[2][1]+SMALL,minzhi);
-      if (boxzlo > boxzhi) error->all("Illegal simulation box");
+      if (boundary[2][0] == 2) boxlo[2] = -all[2][0] - SMALL;
+      else if (boundary[2][0] == 3) boxlo[2] = MIN(-all[2][0]-SMALL,minzlo);
+      if (boundary[2][1] == 2) boxhi[2] = all[2][1] + SMALL;
+      else if (boundary[2][1] == 3) boxhi[2] = MAX(all[2][1]+SMALL,minzhi);
+      if (boxlo[2] > boxhi[2]) error->all("Illegal simulation box");
     }
   }
 
@@ -751,23 +748,25 @@ void Domain::print_box(char *str)
     if (screen) {
       if (domain->triclinic == 0)
 	fprintf(screen,"%sorthogonal box = (%g %g %g) to (%g %g %g)\n",
-		str,boxxlo,boxylo,boxzlo,boxxhi,boxyhi,boxzhi);
+		str,boxlo[0],boxlo[1],boxlo[2],boxhi[0],boxhi[1],boxhi[2]);
       else {
 	char *format = 
 	  "%striclinic box = (%g %g %g) to (%g %g %g) with tilt (%g %g %g)\n";
 	fprintf(screen,format,
-		str,boxxlo,boxylo,boxzlo,boxxhi,boxyhi,boxzhi,xy,xz,yz);
+		str,boxlo[0],boxlo[1],boxlo[2],boxhi[0],boxhi[1],boxhi[2],
+		xy,xz,yz);
       }
     }
     if (logfile) {
       if (triclinic == 0)
 	fprintf(logfile,"%sorthogonal box = (%g %g %g) to (%g %g %g)\n",
-		str,boxxlo,boxylo,boxzlo,boxxhi,boxyhi,boxzhi);
+		str,boxlo[0],boxlo[1],boxlo[2],boxhi[0],boxhi[1],boxhi[2]);
       else {
 	char *format = 
 	  "%striclinic box = (%g %g %g) to (%g %g %g) with tilt (%g %g %g)\n";
 	fprintf(logfile,format,
-		str,boxxlo,boxylo,boxzlo,boxxhi,boxyhi,boxzhi,xy,xz,yz);
+		str,boxlo[0],boxlo[1],boxlo[2],boxhi[0],boxhi[1],boxhi[2],
+		xy,xz,yz);
       }
     }
   }
diff --git a/src/domain.h b/src/domain.h
index ebde41d8412326f0609b96d6cf94c7e8846f8fe6..0624242ca4941f38615a7c63a7d10d097dea8083 100644
--- a/src/domain.h
+++ b/src/domain.h
@@ -42,18 +42,13 @@ class Domain : protected Pointers {
   double prd[3];                         // array form of dimensions
 
                                          // triclinic box
-                                         // xprd,half,prd = same
-                                         // (as if untilted)
+                                         // xprd,half,prd = same (as if untilt)
   double prd_lamda[3];                   // lamda box = (1,1,1)
 
-  double boxxlo,boxxhi;                  // orthogonal box
-  double boxylo,boxyhi;                  // global box bounds
-  double boxzlo,boxzhi;
-  double boxlo[3],boxhi[3];              // array form of box bounds
+  double boxlo[3],boxhi[3];              // orthogonal box global bounds
 
                                          // triclinic box
-                                         // boxxlo/hi,boxlo/hi = same
-                                         // (as if untilted)
+                                         // boxlo/hi = same (as if untilted)
   double boxlo_lamda[3],boxhi_lamda[3];  // lamda box = (0,1)
   double boxlo_bound[3],boxhi_bound[3];  // bounding box of tilted domain
 
diff --git a/src/dump.cpp b/src/dump.cpp
index b8c7bdf51ec89f037d18a9743bdfb0966fc58032..ff6d8882cc1b724e94c3f319d5e6e145abae88ce 100644
--- a/src/dump.cpp
+++ b/src/dump.cpp
@@ -122,12 +122,12 @@ void Dump::write()
   // simulation box bounds
 
   if (domain->triclinic == 0) {
-    boxxlo = domain->boxxlo;
-    boxxhi = domain->boxxhi;
-    boxylo = domain->boxylo;
-    boxyhi = domain->boxyhi;
-    boxzlo = domain->boxzlo;
-    boxzhi = domain->boxzhi;
+    boxxlo = domain->boxlo[0];
+    boxxhi = domain->boxhi[0];
+    boxylo = domain->boxlo[1];
+    boxyhi = domain->boxhi[1];
+    boxzlo = domain->boxlo[2];
+    boxzhi = domain->boxhi[2];
   } else {
     boxxlo = domain->boxlo_bound[0];
     boxxhi = domain->boxhi_bound[0];
diff --git a/src/dump_custom.cpp b/src/dump_custom.cpp
index 72fe1bea3e532670d5b0ad46bf50c28c1375f8a2..456cc353e6b732dd5a4b0c5d344158d8dee46002 100644
--- a/src/dump_custom.cpp
+++ b/src/dump_custom.cpp
@@ -311,7 +311,7 @@ int DumpCustom::count()
 	nstride = 3;
       } else if (thresh_array[ithresh] == XS) {
         double **x = atom->x;
-	double boxxlo = domain->boxxlo;
+	double boxxlo = domain->boxlo[0];
 	double invxprd = 1.0/domain->xprd;
 	for (i = 0; i < nlocal; i++) 
 	  dchoose[i] = (x[i][0] - boxxlo) * invxprd;
@@ -319,7 +319,7 @@ int DumpCustom::count()
 	nstride = 1;
       } else if (thresh_array[ithresh] == YS) {
         double **x = atom->x;
-	double boxylo = domain->boxylo;
+	double boxylo = domain->boxlo[1];
 	double invyprd = 1.0/domain->yprd;
 	for (i = 0; i < nlocal; i++) 
 	  dchoose[i] = (x[i][1] - boxylo) * invyprd;
@@ -327,7 +327,7 @@ int DumpCustom::count()
 	nstride = 1;
       } else if (thresh_array[ithresh] == ZS) {
         double **x = atom->x;
-	double boxzlo = domain->boxzlo;
+	double boxzlo = domain->boxlo[2];
 	double invzprd = 1.0/domain->zprd;
 	for (i = 0; i < nlocal; i++) 
 	  dchoose[i] = (x[i][2] - boxzlo) * invzprd;
@@ -1155,7 +1155,7 @@ void DumpCustom::pack_xs(int n)
   double **x = atom->x;
   int nlocal = atom->nlocal;
 
-  double boxxlo = domain->boxxlo;
+  double boxxlo = domain->boxlo[0];
   double invxprd = 1.0/domain->xprd;
 
   for (int i = 0; i < nlocal; i++)
@@ -1172,7 +1172,7 @@ void DumpCustom::pack_ys(int n)
   double **x = atom->x;
   int nlocal = atom->nlocal;
 
-  double boxylo = domain->boxylo;
+  double boxylo = domain->boxlo[1];
   double invyprd = 1.0/domain->yprd;
 
   for (int i = 0; i < nlocal; i++)
@@ -1189,7 +1189,7 @@ void DumpCustom::pack_zs(int n)
   double **x = atom->x;
   int nlocal = atom->nlocal;
 
-  double boxzlo = domain->boxzlo;
+  double boxzlo = domain->boxlo[2];
   double invzprd = 1.0/domain->zprd;
 
   for (int i = 0; i < nlocal; i++)
diff --git a/src/fix_deposit.cpp b/src/fix_deposit.cpp
index 4420be115e855969d066a659ae6c898a6b328d17..5a0ed002805effe7cd76fed683ad9d029e9f81fc 100644
--- a/src/fix_deposit.cpp
+++ b/src/fix_deposit.cpp
@@ -204,10 +204,10 @@ void FixDeposit::pre_exchange()
 
       if (force->dimension == 2) {
 	dim = 1;
-	max = domain->boxylo;
+	max = domain->boxlo[1];
       } else {
 	dim = 2;
-	max = domain->boxzlo;
+	max = domain->boxlo[2];
       }
 
       double **x = atom->x;
@@ -271,11 +271,11 @@ void FixDeposit::pre_exchange()
     if (newcoord[0] >= sublo[0] && newcoord[0] < subhi[0] &&
 	newcoord[1] >= sublo[1] && newcoord[1] < subhi[1] &&
 	newcoord[2] >= sublo[2] && newcoord[2] < subhi[2]) flag = 1;
-    else if (force->dimension == 3 && newcoord[2] >= domain->boxzhi &&
+    else if (force->dimension == 3 && newcoord[2] >= domain->boxhi[2] &&
 	     comm->myloc[2] == comm->procgrid[2]-1 &&
 	     newcoord[0] >= sublo[0] && newcoord[0] < subhi[0] &&
 	     newcoord[1] >= sublo[1] && newcoord[1] < subhi[1]) flag = 1;
-    else if (force->dimension == 2 && newcoord[1] >= domain->boxyhi &&
+    else if (force->dimension == 2 && newcoord[1] >= domain->boxhi[1] &&
 	     comm->myloc[1] == comm->procgrid[1]-1 &&
 	     newcoord[0] >= sublo[0] && newcoord[0] < subhi[0]) flag = 1;
 
diff --git a/src/fix_nph.cpp b/src/fix_nph.cpp
index b2867c4c995976a7cb37e214e50d436dee18b079..3032c84fe025d994a1ea61cc960999396d702a37 100644
--- a/src/fix_nph.cpp
+++ b/src/fix_nph.cpp
@@ -623,12 +623,12 @@ void FixNPH::box_dilate(int flag)
   double oldlo,oldhi,ctr;
 
   if (domain->xperiodic && p_flag[0]) {
-    oldlo = domain->boxxlo;
-    oldhi = domain->boxxhi;
+    oldlo = domain->boxlo[0];
+    oldhi = domain->boxhi[0];
     ctr = 0.5 * (oldlo + oldhi);
-    domain->boxxlo = (oldlo-ctr)*dilation[0] + ctr;
-    domain->boxxhi = (oldhi-ctr)*dilation[0] + ctr;
-    domain->xprd = domain->boxxhi - domain->boxxlo;
+    domain->boxlo[0] = (oldlo-ctr)*dilation[0] + ctr;
+    domain->boxhi[0] = (oldhi-ctr)*dilation[0] + ctr;
+    domain->prd[0] = domain->xprd = domain->boxhi[0] - domain->boxlo[0];
     if (dilate_partial) {
       for (i = 0; i < n; i++)
 	if (mask[i] & groupbit)
@@ -640,16 +640,16 @@ void FixNPH::box_dilate(int flag)
     if (nrigid)
       for (i = 0; i < nrigid; i++)
 	modify->fix[rfix[i]]->
-	  dilate(0,oldlo,oldhi,domain->boxxlo,domain->boxxhi);
+	  dilate(0,oldlo,oldhi,domain->boxlo[0],domain->boxhi[0]);
   }
 
   if (domain->yperiodic && p_flag[1]) {
-    oldlo = domain->boxylo;
-    oldhi = domain->boxyhi;
+    oldlo = domain->boxlo[1];
+    oldhi = domain->boxhi[1];
     ctr = 0.5 * (oldlo + oldhi);
-    domain->boxylo = (oldlo-ctr)*dilation[1] + ctr;
-    domain->boxyhi = (oldhi-ctr)*dilation[1] + ctr;
-    domain->yprd = domain->boxyhi - domain->boxylo;
+    domain->boxlo[1] = (oldlo-ctr)*dilation[1] + ctr;
+    domain->boxhi[1] = (oldhi-ctr)*dilation[1] + ctr;
+    domain->prd[1] = domain->yprd = domain->boxhi[1] - domain->boxlo[1];
     if (dilate_partial) {
       for (i = 0; i < n; i++)
 	if (mask[i] & groupbit)
@@ -661,16 +661,16 @@ void FixNPH::box_dilate(int flag)
     if (nrigid)
       for (i = 0; i < nrigid; i++)
 	modify->fix[rfix[i]]->
-	  dilate(1,oldlo,oldhi,domain->boxylo,domain->boxyhi);
+	  dilate(1,oldlo,oldhi,domain->boxlo[1],domain->boxhi[1]);
   }
 
   if (domain->zperiodic && p_flag[2]) {
-    oldlo = domain->boxzlo;
-    oldhi = domain->boxzhi;
+    oldlo = domain->boxlo[2];
+    oldhi = domain->boxhi[2];
     ctr = 0.5 * (oldlo + oldhi);
-    domain->boxzlo = (oldlo-ctr)*dilation[2] + ctr;
-    domain->boxzhi = (oldhi-ctr)*dilation[2] + ctr;
-    domain->zprd = domain->boxzhi - domain->boxzlo;
+    domain->boxlo[2] = (oldlo-ctr)*dilation[2] + ctr;
+    domain->boxhi[2] = (oldhi-ctr)*dilation[2] + ctr;
+    domain->prd[2] = domain->zprd = domain->boxhi[2] - domain->boxlo[2];
     if (dilate_partial) {
       for (i = 0; i < n; i++)
 	if (mask[i] & groupbit)
@@ -682,7 +682,7 @@ void FixNPH::box_dilate(int flag)
     if (nrigid)
       for (i = 0; i < nrigid; i++)
 	modify->fix[rfix[i]]->
-	  dilate(2,oldlo,oldhi,domain->boxzlo,domain->boxzhi);
+	  dilate(2,oldlo,oldhi,domain->boxlo[2],domain->boxhi[2]);
   }
 }
 
diff --git a/src/fix_npt.cpp b/src/fix_npt.cpp
index 38862342736349b6ce0f26b19a04cc6697166645..c568e3a8b4a49b08229acfdc7e5dcf73ca5e229e 100644
--- a/src/fix_npt.cpp
+++ b/src/fix_npt.cpp
@@ -649,12 +649,12 @@ void FixNPT::box_dilate(int flag)
   double oldlo,oldhi,ctr;
 
   if (domain->xperiodic && p_flag[0]) {
-    oldlo = domain->boxxlo;
-    oldhi = domain->boxxhi;
+    oldlo = domain->boxlo[0];
+    oldhi = domain->boxhi[0];
     ctr = 0.5 * (oldlo + oldhi);
-    domain->boxxlo = (oldlo-ctr)*dilation[0] + ctr;
-    domain->boxxhi = (oldhi-ctr)*dilation[0] + ctr;
-    domain->xprd = domain->boxxhi - domain->boxxlo;
+    domain->boxlo[0] = (oldlo-ctr)*dilation[0] + ctr;
+    domain->boxhi[0] = (oldhi-ctr)*dilation[0] + ctr;
+    domain->prd[0] = domain->xprd = domain->boxhi[0] - domain->boxlo[0];
     if (dilate_partial) {
       for (i = 0; i < n; i++)
 	if (mask[i] & groupbit)
@@ -666,16 +666,16 @@ void FixNPT::box_dilate(int flag)
     if (nrigid)
       for (i = 0; i < nrigid; i++)
 	modify->fix[rfix[i]]->
-	  dilate(0,oldlo,oldhi,domain->boxxlo,domain->boxxhi);
+	  dilate(0,oldlo,oldhi,domain->boxlo[0],domain->boxhi[0]);
   }
 
   if (domain->yperiodic && p_flag[1]) {
-    oldlo = domain->boxylo;
-    oldhi = domain->boxyhi;
+    oldlo = domain->boxlo[1];
+    oldhi = domain->boxhi[1];
     ctr = 0.5 * (oldlo + oldhi);
-    domain->boxylo = (oldlo-ctr)*dilation[1] + ctr;
-    domain->boxyhi = (oldhi-ctr)*dilation[1] + ctr;
-    domain->yprd = domain->boxyhi - domain->boxylo;
+    domain->boxlo[1] = (oldlo-ctr)*dilation[1] + ctr;
+    domain->boxhi[1] = (oldhi-ctr)*dilation[1] + ctr;
+    domain->prd[1] = domain->yprd = domain->boxhi[1] - domain->boxlo[1];
     if (dilate_partial) {
       for (i = 0; i < n; i++)
 	if (mask[i] & groupbit)
@@ -687,16 +687,16 @@ void FixNPT::box_dilate(int flag)
     if (nrigid)
       for (i = 0; i < nrigid; i++)
 	modify->fix[rfix[i]]->
-	  dilate(1,oldlo,oldhi,domain->boxylo,domain->boxyhi);
+	  dilate(1,oldlo,oldhi,domain->boxlo[1],domain->boxhi[1]);
   }
 
   if (domain->zperiodic && p_flag[2]) {
-    oldlo = domain->boxzlo;
-    oldhi = domain->boxzhi;
+    oldlo = domain->boxlo[2];
+    oldhi = domain->boxhi[2];
     ctr = 0.5 * (oldlo + oldhi);
-    domain->boxzlo = (oldlo-ctr)*dilation[2] + ctr;
-    domain->boxzhi = (oldhi-ctr)*dilation[2] + ctr;
-    domain->zprd = domain->boxzhi - domain->boxzlo;
+    domain->boxlo[2] = (oldlo-ctr)*dilation[2] + ctr;
+    domain->boxhi[2] = (oldhi-ctr)*dilation[2] + ctr;
+    domain->prd[2] = domain->zprd = domain->boxhi[2] - domain->boxlo[2];
     if (dilate_partial) {
       for (i = 0; i < n; i++)
 	if (mask[i] & groupbit)
@@ -708,7 +708,7 @@ void FixNPT::box_dilate(int flag)
     if (nrigid)
       for (i = 0; i < nrigid; i++)
 	modify->fix[rfix[i]]->
-	  dilate(2,oldlo,oldhi,domain->boxzlo,domain->boxzhi);
+	  dilate(2,oldlo,oldhi,domain->boxlo[2],domain->boxhi[2]);
   }
 }
 
diff --git a/src/fix_uniaxial.cpp b/src/fix_uniaxial.cpp
index 01496ad0e84cec33b344275868bb83a98ddc5ca1..8b610fbeaea28e367fa600d9108d8f5bb28ba13e 100644
--- a/src/fix_uniaxial.cpp
+++ b/src/fix_uniaxial.cpp
@@ -37,6 +37,9 @@ FixUniaxial::FixUniaxial(LAMMPS *lmp, int narg, char **arg) :
   Fix(lmp, narg, arg)
 {
   if (narg != 6) error->all("Illegal fix uniaxial command");
+
+  box_change = 1;
+
   nevery = atoi(arg[3]);
   if (nevery <= 0) error->all("Illegal fix uniaxial command");
 
@@ -79,21 +82,21 @@ void FixUniaxial::init()
 {
   // store pointers to domain variable so can loop over dimensions
 
-  domainlo[0] = &domain->boxxlo;
-  domainlo[1] = &domain->boxylo;
-  domainlo[2] = &domain->boxzlo;
+  domainlo[0] = &domain->boxlo[0];
+  domainlo[1] = &domain->boxlo[1];
+  domainlo[2] = &domain->boxlo[2];
   
-  domainhi[0] = &domain->boxxhi;
-  domainhi[1] = &domain->boxyhi;
-  domainhi[2] = &domain->boxzhi;
+  domainhi[0] = &domain->boxhi[0];
+  domainhi[1] = &domain->boxhi[1];
+  domainhi[2] = &domain->boxhi[2];
 
   domainprd[0] = &domain->xprd;
   domainprd[1] = &domain->yprd;
   domainprd[2] = &domain->zprd;
 
-  double L = pow((domain->boxxhi-domain->boxxlo)*
-                 (domain->boxyhi-domain->boxylo)*
-                 (domain->boxzhi-domain->boxzlo) ,1.0/3.0);
+  double L = pow((domain->boxhi[0]-domain->boxlo[0])*
+                 (domain->boxhi[1]-domain->boxlo[1])*
+                 (domain->boxhi[2]-domain->boxlo[2]) ,1.0/3.0);
    
   // save box sizes for coordinate rescaling
   // calculate strains and asymmetry parameter
@@ -196,7 +199,7 @@ void FixUniaxial::end_of_step()
     
     *domainlo[m] = newlo;
     *domainhi[m] = newhi;
-    *domainprd[m] = newhi - newlo;
+    domain->prd[m] = *domainprd[m] = newhi - newlo;
   
     if (nrigid)
       for (i = 0; i < nrigid; i++)
diff --git a/src/fix_volume_rescale.cpp b/src/fix_volume_rescale.cpp
index 413172aa216e92d1f7eef1da905c63459121736d..4861487bef33e4746ac81bc5a1364c65059440b9 100644
--- a/src/fix_volume_rescale.cpp
+++ b/src/fix_volume_rescale.cpp
@@ -94,12 +94,12 @@ int FixVolRescale::setmask()
 
 void FixVolRescale::init()
 {
-  xlo_start = domain->boxxlo;
-  xhi_start = domain->boxxhi;
-  ylo_start = domain->boxylo;
-  yhi_start = domain->boxyhi;
-  zlo_start = domain->boxzlo;
-  zhi_start = domain->boxzhi;
+  xlo_start = domain->boxlo[0];
+  xhi_start = domain->boxhi[0];
+  ylo_start = domain->boxlo[1];
+  yhi_start = domain->boxhi[1];
+  zlo_start = domain->boxlo[2];
+  zhi_start = domain->boxhi[2];
 
   if (force->kspace) kspace_flag = 1;
   else kspace_flag = 0;
@@ -138,51 +138,51 @@ void FixVolRescale::end_of_step()
   int nlocal = atom->nlocal;
 
   if (xflag) {
-    oldlo = domain->boxxlo;
-    oldhi = domain->boxxhi;
+    oldlo = domain->boxlo[0];
+    oldhi = domain->boxhi[0];
     newlo = xlo_start + delta * (xlo_stop-xlo_start);
     newhi = xhi_start + delta * (xhi_stop-xhi_start);
     ratio = (newhi - newlo) / domain->xprd;
     for (i = 0; i < nlocal; i++)
       if (mask[i] & groupbit)
 	x[i][0] = newlo + (x[i][0] - oldlo) * ratio;
-    domain->boxxlo = newlo;
-    domain->boxxhi = newhi;
-    domain->xprd = newhi - newlo;
+    domain->boxlo[0] = newlo;
+    domain->boxhi[0] = newhi;
+    domain->prd[0] = domain->xprd = newhi - newlo;
     if (nrigid)
       for (i = 0; i < nrigid; i++)
 	modify->fix[rfix[i]]->dilate(0,oldlo,oldhi,newlo,newhi);
   }
 
   if (yflag) {
-    oldlo = domain->boxylo;
-    oldhi = domain->boxyhi;
+    oldlo = domain->boxlo[1];
+    oldhi = domain->boxhi[1];
     newlo = ylo_start + delta * (ylo_stop-ylo_start);
     newhi = yhi_start + delta * (yhi_stop-yhi_start);
     ratio = (newhi - newlo) / domain->yprd;
     for (i = 0; i < nlocal; i++)
       if (mask[i] & groupbit)
 	x[i][1] = newlo + (x[i][1] - oldlo) * ratio;
-    domain->boxylo = newlo;
-    domain->boxyhi = newhi;
-    domain->yprd = newhi - newlo;
+    domain->boxlo[1] = newlo;
+    domain->boxhi[1] = newhi;
+    domain->prd[1] = domain->yprd = newhi - newlo;
     if (nrigid)
       for (i = 0; i < nrigid; i++)
 	modify->fix[rfix[i]]->dilate(1,oldlo,oldhi,newlo,newhi);
   }
 
   if (zflag) {
-    oldlo = domain->boxzlo;
-    oldhi = domain->boxzhi;
+    oldlo = domain->boxlo[2];
+    oldhi = domain->boxhi[2];
     newlo = zlo_start + delta * (zlo_stop-zlo_start);
     newhi = zhi_start + delta * (zhi_stop-zhi_start);
     ratio = (newhi - newlo) / domain->zprd;
     for (i = 0; i < nlocal; i++)
       if (mask[i] & groupbit)
 	x[i][2] = newlo + (x[i][2] - oldlo) * ratio;
-    domain->boxzlo = newlo;
-    domain->boxzhi = newhi;
-    domain->zprd = newhi - newlo;
+    domain->boxlo[2] = newlo;
+    domain->boxhi[2] = newhi;
+    domain->prd[2] = domain->zprd = newhi - newlo;
     if (nrigid)
       for (i = 0; i < nrigid; i++)
 	  modify->fix[rfix[i]]->dilate(2,oldlo,oldhi,newlo,newhi);
diff --git a/src/fix_wall_reflect.cpp b/src/fix_wall_reflect.cpp
index da8ee9bb5c9c180e8806d767b4e3fc067b476607..dbb4e260a57fdf7ce273f81a12be97ebaf824499 100644
--- a/src/fix_wall_reflect.cpp
+++ b/src/fix_wall_reflect.cpp
@@ -76,12 +76,12 @@ void FixWallReflect::init()
 
 void FixWallReflect::initial_integrate()
 {
-  double xlo = domain->boxxlo;
-  double xhi = domain->boxxhi;
-  double ylo = domain->boxylo;
-  double yhi = domain->boxyhi;
-  double zlo = domain->boxzlo;
-  double zhi = domain->boxzhi;
+  double xlo = domain->boxlo[0];
+  double xhi = domain->boxhi[0];
+  double ylo = domain->boxlo[1];
+  double yhi = domain->boxhi[1];
+  double zlo = domain->boxlo[2];
+  double zhi = domain->boxhi[2];
 
   double **x = atom->x;
   double **v = atom->v;
diff --git a/src/read_data.cpp b/src/read_data.cpp
index 539fa759eb46b5a3e7119830a26dc53d09c84a89..9721908c207797922bcf54696bf51c1b4af77fcf 100644
--- a/src/read_data.cpp
+++ b/src/read_data.cpp
@@ -353,11 +353,11 @@ void ReadData::header(int flag)
     else if (strstr(line,"improper types")) 
       sscanf(line,"%d",&atom->nimpropertypes);
     else if (strstr(line,"xlo xhi")) 
-      sscanf(line,"%lg %lg",&domain->boxxlo,&domain->boxxhi);
+      sscanf(line,"%lg %lg",&domain->boxlo[0],&domain->boxhi[0]);
     else if (strstr(line,"ylo yhi")) 
-      sscanf(line,"%lg %lg",&domain->boxylo,&domain->boxyhi);
+      sscanf(line,"%lg %lg",&domain->boxlo[1],&domain->boxhi[1]);
     else if (strstr(line,"zlo zhi")) 
-      sscanf(line,"%lg %lg",&domain->boxzlo,&domain->boxzhi);
+      sscanf(line,"%lg %lg",&domain->boxlo[2],&domain->boxhi[2]);
     else if (strstr(line,"xy xz yz")) {
       domain->triclinic = 1;
       sscanf(line,"%lg %lg %lg",&domain->xy,&domain->xz,&domain->yz);
diff --git a/src/read_restart.cpp b/src/read_restart.cpp
index 12fadcc35cc6caad2778e34c21e9afc788eabd62..ec19f31774a1376e3a56d6fcf41f11ef3845c718 100644
--- a/src/read_restart.cpp
+++ b/src/read_restart.cpp
@@ -505,17 +505,17 @@ void ReadRestart::header()
       atom->improper_per_atom = read_int();
 
     } else if (flag == 34) {
-      domain->boxxlo = read_double();
+      domain->boxlo[0] = read_double();
     } else if (flag == 35) {
-      domain->boxxhi = read_double();
+      domain->boxhi[0] = read_double();
     } else if (flag == 36) {
-      domain->boxylo = read_double();
+      domain->boxlo[1] = read_double();
     } else if (flag == 37) {
-      domain->boxyhi = read_double();
+      domain->boxhi[1] = read_double();
     } else if (flag == 38) {
-      domain->boxzlo = read_double();
+      domain->boxlo[2] = read_double();
     } else if (flag == 39) {
-      domain->boxzhi = read_double();
+      domain->boxhi[2] = read_double();
 
     } else if (flag == 40) {
       force->special_lj[1] = read_double();
diff --git a/src/replicate.cpp b/src/replicate.cpp
index 97c82359625b48ed2daa9cd088cfe2b3ef791ea5..b6a42221cb6e02215752ffba36f79709a153c6f4 100644
--- a/src/replicate.cpp
+++ b/src/replicate.cpp
@@ -168,9 +168,9 @@ void Replicate::command(int narg, char **arg)
 
   // setup new simulation box
 
-  domain->boxxhi = domain->boxxlo + nx*old_xprd;
-  domain->boxyhi = domain->boxylo + ny*old_yprd;
-  domain->boxzhi = domain->boxzlo + nz*old_zprd;
+  domain->boxhi[0] = domain->boxlo[0] + nx*old_xprd;
+  domain->boxhi[1] = domain->boxlo[1] + ny*old_yprd;
+  domain->boxhi[2] = domain->boxlo[2] + nz*old_zprd;
   if (triclinic) {
     domain->xy *= ny;
     domain->xz *= nz;
diff --git a/src/thermo.cpp b/src/thermo.cpp
index 22eec73d350313d216fdfe71e367b6a68c4fd0b9..b48e03f3b2cd29f4694949600daa4fe594b0b383 100644
--- a/src/thermo.cpp
+++ b/src/thermo.cpp
@@ -1326,42 +1326,42 @@ void Thermo::compute_lz()
 
 void Thermo::compute_xlo()
 {
-  dvalue = domain->boxxlo;
+  dvalue = domain->boxlo[0];
 }
 
 /* ---------------------------------------------------------------------- */
 
 void Thermo::compute_xhi()
 {
-  dvalue = domain->boxxhi;
+  dvalue = domain->boxhi[0];
 }
 
 /* ---------------------------------------------------------------------- */
 
 void Thermo::compute_ylo()
 {
-  dvalue = domain->boxylo;
+  dvalue = domain->boxlo[1];
 }
 
 /* ---------------------------------------------------------------------- */
 
 void Thermo::compute_yhi()
 {
-  dvalue = domain->boxyhi;
+  dvalue = domain->boxhi[1];
 }
 
 /* ---------------------------------------------------------------------- */
 
 void Thermo::compute_zlo()
 {
-  dvalue = domain->boxzlo;
+  dvalue = domain->boxlo[2];
 }
 
 /* ---------------------------------------------------------------------- */
 
 void Thermo::compute_zhi()
 {
-  dvalue = domain->boxzhi;
+  dvalue = domain->boxhi[2];
 }
 
 /* ---------------------------------------------------------------------- */
diff --git a/src/write_restart.cpp b/src/write_restart.cpp
index 16cccc59738c31a74175ceac4851571eb673d3d5..d31ce8d085489da53e8165b4f88a893ed43ba141 100644
--- a/src/write_restart.cpp
+++ b/src/write_restart.cpp
@@ -272,12 +272,12 @@ void WriteRestart::header()
   write_int(32,atom->nimpropertypes);
   write_int(33,atom->improper_per_atom);
 
-  write_double(34,domain->boxxlo);
-  write_double(35,domain->boxxhi);
-  write_double(36,domain->boxylo);
-  write_double(37,domain->boxyhi);
-  write_double(38,domain->boxzlo);
-  write_double(39,domain->boxzhi);
+  write_double(34,domain->boxlo[0]);
+  write_double(35,domain->boxhi[0]);
+  write_double(36,domain->boxlo[1]);
+  write_double(37,domain->boxhi[1]);
+  write_double(38,domain->boxlo[2]);
+  write_double(39,domain->boxhi[2]);
 
   write_double(40,force->special_lj[1]);
   write_double(41,force->special_lj[2]);