Repeating values on LCD

So I’m using the LiquidCrystal library to have a scrolling series of dots. For some reason, when the fillAcross function executes, it repeats the fillLineSlow function in every previous block of the display, instead of just the one in column “i” and row “row.” Any ideas?

void clearLine(int line, byte* bar) {
  bar[line] = B000000;
  lcd.createChar(0, bar);
}


void fillLineSlow(int line, int col, int row, byte* bar)
{
    for (int i = 0; i < 5; i++) {
      bar[line] = bar[line] >> 1;
      bar[line] = bar[line] + B10000; 
    lcd.createChar(0, bar);
      lcd.setCursor(col, row);  
      lcd.write(0);
      delay(50);
    }
}

    
void fillAcross(int line, int row, byte* bar) {
  for (int i = 0; i < 16; i++)
  {
    fillLineSlow(line, i, row, bar);
    clearLine(line, bar);
  }
}
    
void setup() {

  lcd.begin(16,2);
  lcd.createChar(1, temp);
  fillAcross(0, 0, dot);
 
}

You are filling the line with "Custom Character 0" and then re-defining the shape of "Custom Character 0". Naturally the previous copies of "Custom Character 0" change shape.

To fix it you should create 5 different custom characters:

0b00000 0b10000 0b11000 0b11100 0b11110 0b11111

Then cycle between the characters.