For better understanding of the markers of oldcode vs newcode, some examples: extracts of attr_LPSummary generated by newcode *********************** LEGEND POINTS REPORT *********************** Spell Flame Flash Circle 1 LP-Cost 100 Spell Restrain Entity Circle 7 LP-Cost 2100 SpellKnack Astral Lance Circle 1 LP-Cost 100 Credit for 1 Free Spell per Circle (Optional Rule) for Discipline Nethermancer Circle 2 LP-Credit 200 Credit for 1 Free Spell per Circle (Optional Rule) for Discipline Nethermancer Circle 3 LP-Credit 300 Credit for 1 Free Spell per Circle (Optional Rule) for Discipline Nethermancer Circle 4 LP-Credit 500 Credit for 1 Free Spell per Circle (Optional Rule) for Discipline Nethermancer Circle 5 LP-Credit 800 Credit for 1 Free Spell per Circle (Optional Rule) for Discipline Nethermancer Circle 6 LP-Credit 1300 Credit for 1 Free Spell per Circle (Optional Rule) for Discipline Nethermancer Circle 7 LP-Credit 2100 extract of LP_Summary generated by oldcode *********************** LEGEND POINTS REPORT *********************** Multidiscipline to 2nd Discipline 0 Discipline Talents to be purchased when lowest Circle was 5 extra LP-Cost: 0 Spell Restrain Entity Circle 7 LP-Cost 2100 Spell Astral Lance Circle 1 LP-Cost 100 Credit for 1 Free Spell per Circle (Optional Rule) for Discipline Nethermancer Circle 7 LP-Credit 5300 Note the 3 differences: The multidiscipline line with 0 at the end disappeared Some Spells prefixed by SpellKnack instead of Spell The Credit for 1 Free Spell line is now one per Circle, instead of just one line with the total For better understanding of the code below, s is the variable that will end up being posted in attr_LPSummary //newcode the line is only posted if it doesn't result in 0 if(inc>0) s+= "Multidiscipline to 2nd Discipline " + getInt(values,"LP-D2-Talents") + " Discipline Talents to be purchased when lowest Circle was " + getInt(values,"LP-D2-Circle") + " extra LP-Cost: " + inc +"\n"; //oldcode s+= "Multidiscipline to 2nd Discipline " + getInt(values,"LP-D2-Talents") + " Discipline Talents to be purchased when lowest Circle was " + getInt(values,"LP-D2-Circle") + " extra LP-Cost: " + inc +"\n"; //newcode the prefix is the Type of the entry, while in the old code it was a static "Spell s+=PackEntry("",inc,values[buildPre( "SP", sparray[ i ] ) + "Name"],rnk,"Circle", values[buildPre( "SP", sparray[ i ] ) + "Type"]||"Spell" ); //oldcode s+=PackEntry("",inc,values[buildPre( "SP", sparray[ i ] ) + "Name"],rnk,"Circle", "Spell" ); //newcode the line posting is inside the for loop for(let j=(i==0?2:1); j<=rnk; j++) { inc+=fibocost[j]; //For first discipline, first circle no free spell s+="Credit for 1 Free Spell per Circle (Optional Rule) for Discipline "+values[pre+"Name"] + " Circle " + j+ " LP-Credit "+fibocost[j] +"\n"; } //old code the for sums up the value, but the line posting is outside the for loop for(let j=(nbsc==1?2:1); j<=rnk; j++) inc+=fibocost[j]; //For first SC discipline, first circle no free spell s+="Credit for 1 Free Spell per Circle (Optional Rule) for Discipline "+values[pre+"Name"] + " Circle " + values[pre+"Circle"]+ " LP-Credit "+inc +"\n"; All those are pretty strong markers that the result is from the oldcode or newcode, so I have a very high level of confidence that if I see the results above, it marks the last version of the code to be either the old or the new... So remain my question : how is it possible that the old code has run after the new ( note also about isn't there a duplicate somewhere, the "Multidiscipline to" line is quite remarkable to search, and is nowhere else in the code)