I also believe the OP may be a bit BIP incompliant.
I do not see an RPC command or a Field in getwork - getworkex or getblocktemplate that gives the current Nfactor.
I may be wrong and missed it, but withholding vital mining information from RPC is ,shall we say "dirty pool"

Here is where it's calculated in the source
// yacoin: increasing Nfactor gradually
const unsigned char minNfactor = 4;
const unsigned char maxNfactor = 30;
unsigned char GetNfactor(int64 nTimestamp) {
int l = 0;
if (nTimestamp <= nChainStartTime)
return 4;
int64 s = nTimestamp - nChainStartTime;
while ((s >> 1) > 3) {
l += 1;
s >>= 1;
}
s &= 3;
int n = (l * 170 + s * 25 - 2320) / 100;
if (n < 0) n = 0;
if (n > 255)
printf("GetNfactor(%d) - something wrong(n == %d)\n", nTimestamp, n);
unsigned char N = (unsigned char)n;
//printf("GetNfactor: %d -> %d %d : %d / %d\n", nTimestamp - nChainStartTime, l, s, n, min(max(N, minNfactor), maxNfactor));
return min(max(N, minNfactor), maxNfactor);
}
Note that "N factor" means 2^N, so minimum is N=16. But it doesn't really matter what N is, you can just keep increasing the lookup_gap on higher N values and I think you still will get 5-10x better GPU performance (particularly once you offload onto DDR3 memory with the CPU, when N > 1024 or N factor is > 10; you're outside of the L2 cache at that point and the DDR3 is slooooow in comparison to GDDR5 so you should see at least 10x performance I would guess).