Insert these lines into the before rule for PushDir:
if (second==u_obj) <<PushDir self n_obj>>; if (second==d_obj) <<PushDir self s_obj>>;