Du füllst in 2 Schleifen jeweils "helpd[l]:=". Damit überschreibst du beim 2x das, was du beim 1x reingeschrieben hast, ist das gewollt?
sind doch 2 verschiedene
"helpd[l]:="
"helpb[l]:="
Das hab ich nicht gesehen, dass da einmal b und einmal p am Schluss steht. Ist dann aber in jedem Fall ein gutes Beispiel für eine schlechte "Benamsung".
Davon ab steht aber der Rest meines Posts noch, dass wahrscheinlich sl.Values statt sl.Objects verwendet werden sollte.