+ for(c=-1;c<=1;c++)
+ {
+ if(c!=0)
+ {
+ off=((i+d3_l->max_x+c)%d3_l->max_x)+j*d3_l->max_x+k*d3_l->max_x*d3_l->max_y;
+ carry=0;
+ if(!(*(d3_l->status+off)&AMORPH)) carry=(int)(my_info->dr_ac*(*(d3_l->extra+off)));
+ if(carry!=0)
+ {
+ *(d3_l->extra+offset)+=carry;
+ *(d3_l->extra+off)-=carry;
+ }
+ }
+ }
+ for(c=-1;c<=1;c++)
+ {
+ if(c!=0)
+ {
+ off=i+((j+c+d3_l->max_y)%d3_l->max_y)*d3_l->max_x+k*d3_l->max_x*d3_l->max_y;
+ carry=0;
+ if(!(*(d3_l->status+off)&AMORPH)) carry=(int)(my_info->dr_ac*(*(d3_l->extra+off)));
+ if(carry!=0)
+ {
+ *(d3_l->extra+offset)+=carry;
+ *(d3_l->extra+off)-=carry;
+ }
+ }
+ }
+ if(my_info->z_diff)
+ {
+ for(c=-1;c<=1;c++)
+ {
+ if(c!=0)
+ {
+ off=i+j*d3_l->max_x+((k+c+d3_l->max_z)%d3_l->max_z)*d3_l->max_x*d3_l->max_y;
+ carry=0;
+ if(!*(d3_l->status+off)&AMORPH) carry=(int)(my_info->dr_ac*(*(d3_l->extra+off)));
+ if(carry!=0)
+ {
+ *(d3_l->extra+off)-=carry;
+ *(d3_l->extra+offset)+=carry;
+ }
+ }
+ }
+ }
+ } else
+ /* case not amorph - cryst <-> cryst diffusion */
+ {
+ for(c=-1;c<=1;c++)
+ {
+ if(c!=0)
+ {
+ off=i+((j+c+d3_l->max_y)%d3_l->max_y)*d3_l->max_x+k*d3_l->max_x*d3_l->max_y;
+ carry=0;
+ if(!(*(d3_l->status+off)&AMORPH))
+ {
+ carry=(*(d3_l->extra+off)-*(d3_l->extra+offset))/2;
+ if(carry!=0)
+ {
+ *(d3_l->extra+offset)+=carry;
+ *(d3_l->extra+off)-=carry;
+ }
+ }
+ }
+ }
+ for(c=-1;c<=1;c++)
+ {
+ if(c!=0)
+ {
+ off=((i+c+d3_l->max_x)%d3_l->max_x)+j*d3_l->max_x+k*d3_l->max_x*d3_l->max_y;
+ carry=0;
+ if(!(*(d3_l->status+off)&AMORPH))
+ {
+ carry=(*(d3_l->extra+off)-*(d3_l->extra+offset))/2;
+ if(carry!=0)
+ {
+ *(d3_l->extra+offset)+=carry;
+ *(d3_l->extra+off)-=carry;
+ }
+ }
+ }
+ }