Xstar chooses spatial steps using a Courant condition (with limits) based on the local opacity. It doesn't pay attention to where the cloud boundary is during this procedure, but rather checks after each step to see if it has gone too far. If yes, it stops. It does not go back and redo the step if it has gone significantly past the column density limit specified in the parameter file. If this problem appears, you need to change the limits of the step size calculator to something smaller. This is done using the parameter emult (normally hidden) in xstar.par. The default is 0.5; values smaller by a factor 5 - 10 may slow execution somewhat but will solve the problem.