Tente com a alteração abaixo: Passei as linhas 15, 16 e 17 do seu código para o inicio do laço "j". Veja se é isso.
if fx1<>0 // esta rotina será executada se fx1 # 0
k:=fx1-9 // k assume 9 valores anterioress a fx1
for j:=k to fx1
select bde
dbappend()
select bp
for r:= 1 to 15 // 15 valores possÃveis existentes em BP
vLr:="F" + alltrim(str(r)) // vLr assume bde >> f1 f2 ... f15
select bp
go j
for m:= 1 to 25 // esta rotina localiza os correspondentes F1 com N1 F2 com N2 etc.
if bp->&vLr = m // macro assume bp >> bp->f1,bp->f2 ...bp->f15
bdN:="N" + alltrim(str(m)) //bdN assume os campos de bde >> N1, N2, ...,N25
replace bde->&bdN with 1 // na existência do correspondente o campo N assume valor 1
endif
next
next
next
endif