diff --git a/src/simplex/spydual.c b/src/simplex/spydual.c
index d33ebb1..1fef5d8 100644
--- a/src/simplex/spydual.c
+++ b/src/simplex/spydual.c
@@ -1532,6 +1532,13 @@ loop: /* main loop starts here */
                   xassert(!csa->beta_st);
                   goto loop;
                }
+               if (perturb)
+               {  /* remove perturbation */
+                  perturb = 0;
+                  memcpy(csa->lp->c, csa->orig_c, (1+n) * sizeof(double));
+                  csa->phase = csa->d_st = 0;
+                  goto loop;
+               }
                /* no dual feasible solution exists */
                if (msg_lev >= GLP_MSG_ALL)
                   xprintf("LP HAS NO DUAL FEASIBLE SOLUTION\n");
