diff -Naur glpkdummy/src/glpapi08.c glpk/src/glpapi08.c --- glpkdummy/src/glpapi08.c Fri Aug 22 08:25:51 2008 +++ glpk/src/glpapi08.c Fri Aug 22 08:31:53 2008 @@ -349,9 +349,15 @@ switch (ret) { case 0: if (tree->mip->mip_stat == GLP_FEAS) - { if (parm->msg_lev >= GLP_MSG_ALL) - xprintf("INTEGER OPTIMAL SOLUTION FOUND\n"); - tree->mip->mip_stat = GLP_OPT; + { if (ios_relative_gap(tree) > 0) { + if (parm->msg_lev >= GLP_MSG_ALL) + xprintf("INTEGER FEASIBLE SOLUTION FOUND, GAP SMALLER THAN TOLERANCE\n"); + tree->mip->mip_stat = GLP_FEAS; + } else { + if (parm->msg_lev >= GLP_MSG_ALL) + xprintf("INTEGER OPTIMAL SOLUTION FOUND\n"); + tree->mip->mip_stat = GLP_OPT; + } } else { if (parm->msg_lev >= GLP_MSG_ALL) diff -Naur glpkdummy/src/glpios03.c glpk/src/glpios03.c --- glpkdummy/src/glpios03.c Wed Aug 13 04:00:00 2008 +++ glpk/src/glpios03.c Fri Aug 22 08:32:10 2008 @@ -1346,7 +1346,7 @@ { if (tree->parm->msg_lev >= GLP_MSG_DBG) xprintf("Relative gap tolerance reached; search terminat" "ed\n"); - ret = GLP_ETMLIM; + ret = 0; goto done; } #endif diff -Naur glpk/src/glplpx01.c.orig glpk/src/glplpx01.c --- glpk/src/glplpx01.c.orig 2008-09-05 19:44:36.000000000 +0200 +++ glpk/src/glplpx01.c 2008-09-05 19:42:45.000000000 +0200 @@ -333,7 +333,7 @@ ret = glp_simplex(lp, &parm); switch (ret) { case 0: ret = LPX_E_OK; break; - case GLP_EBADB: + case GLP_EBADB: ret = LPX_E_BADB; break; case GLP_ESING: case GLP_ECOND: case GLP_EBOUND: ret = LPX_E_FAULT; break;