LCD Custom Character Arrays Being Overwritten?

I have some custom characters in an array setup, but they are being overwritten.

Sketch is truncated

byte tempChar[8] = {
  0b00100,
  0b01010,
  0b01010,
  0b01010,
  0b01010,
  0b10001,
  0b11111,
  0b01110
};
byte BChar[8] = {
  0b11110,
  0b11011,
  0b11011,
  0b11110,
  0b11011,
  0b11011,
  0b11110,
  0b00000
};
byte CChar[8] = {
  0b01110,
  0b11011,
  0b11000,
  0b11000,
  0b11000,
  0b11011,
  0b01110,
  0b00000
};
byte SChar[8] = {
  0b01111,
  0b11111,
  0b11000,
  0b11111,
  0b00011,
  0b11111,
  0b11110,
  0b00000
};
byte rightArrowChar[8] = {
  0b01000,
  0b01100,
  0b01110,
  0b01111,
  0b01110,
  0b01100,
  0b01000,
  0b00000
};
byte GChar[8] = {
  0b01110,
  0b11011,
  0b11000,
  0b11011,
  0b11011,
  0b11001,
  0b01111,
  0b00000
};
byte leftHugChar[8] = {
  0b00001,
  0b00011,
  0b00011,
  0b00011,
  0b00011,
  0b11111,
  0b11111,
  0b00000
};
byte rightHugChar[8] = {
  0b10000,
  0b11000,
  0b11000,
  0b11000,
  0b11000,
  0b11111,
  0b11111,
  0b00000
};
byte thickDashChar[8] = {
  0b00000,
  0b00000,
  0b00000,
  0b00000,
  0b00000,
  0b11111,
  0b11111,
  0b00000
};
byte partFillBoxChar[8] = {
  0b11111,
  0b10001,
  0b10001,
  0b11111,
  0b11111,
  0b11111,
  0b11111,
  0b00000
};

  lcd.createChar(1, BChar);
  lcd.createChar(2, SChar);
  lcd.createChar(3, CChar);
  lcd.createChar(5, GChar);
  lcd.createChar(4, rightArrowChar);
  lcd.createChar(6, leftHugChar);
  lcd.createChar(7, rightHugChar);
  lcd.createChar(8, thickDashChar);
  lcd.createChar(9, tempChar);
  lcd.createChar(10, partFillBoxChar);

  lcd.setCursor(0, 3);
  lcd.write((uint8_t)2); // Bold S    *** This character is being overwritten by the Part Fill Box Character ****
  lcd.write((uint8_t)10); // Part Fill Box
    
  lcd.setCursor(13, 2); // Coffee Boiler/Group Temp
  lcd.write((uint8_t)3); // Bold C
  lcd.write((uint8_t)9); // Temp Icon
  lcd.setCursor(15, 2);
  lcd.print(coffeeBoilerTemp, 1);

  lcd.setCursor(13, 3); // Coffee Boiler Pressure
  lcd.write((uint8_t)3); // Bold C
  lcd.write((uint8_t)10); // Part Fill Box  *** This character is overwriting the Bold S Above ***
  lcd.print(coffeePressure, 1);
      
  lcd.setCursor(2, 3); // Service Boiler Pressure
  lcd.print(boilerPressure, 1);
  lcd.setCursor(5, 3);
  lcd.print(F("b"));

The "lcd.write((uint8_t)2); // Bold S" is being overwritten by " lcd.write((uint8_t)10); // Part Fill Box". If I remove the "lcd.write((uint8_t)10); // Part Fill Box" array/setup then the "Bold S" displays perfectly...
It is not a positioning error, the character itself is being "misrepresented"?

Thank you in advance for any insight

There are only 8 custom characters allowed (0 to 7). Characters 8 to 15 are the same as 0 to 7.

That code does not compile. Please post some that does.

You only get 8 custom characters

groundFungus:
There are 8 custom characters allowed (0 to 7). Characters 8 to 15 are the same as 0 to 7.

Is that a limitation of the library or the LCD itself?

Is that a limitation of the library or the LCD itself?

It is a limitation of the hd44780 LCD controller.

Thank you!

have a look in the datasheet if you can use some existing special characters instead of custom characters.

e.g.

0x7F is some kind of LEFTWARDS ARROW
0x7E is some kind of RIGHTWARDS ARROW