Arduino - Progamming issue
int laastButtons[3]; // save the previous deBounce read.
for(int x; x&lt;4; x++)
{
   laastButtons[x] = lastButtons[x];


Well, there's a common bug right away.  An array with three slices, numbered 0, 1 and 2, and you're accessing them with a loop that counts from 0 to 3.

Spot the error.

Also, in the for loop, what number does it start counting from?

And now for your "bug".  This block of code:

if(lastButtons[x] == true)
{
  delay(50);
  lastButtons[x] = !digitalRead(button[x]);
  if(lastButtons[x] == 1){ pressed = x;}
  nt("Pressed!, Button ID: ");nt(x); nt(" pressed:  ");nt(pressed); nt(" state "); ntln(lastButtons[x]);
}


I think you have it slightly wrong.  Let's convert it into plain english:


If button is pressed:

Delay 50 ms
Read button again
If button is pressed:

Set pressed to the button number

Print the button message



Note the indenting, which highlights what gets executed for what IF statement.  The print is going to happen regardless of the setting of the pressed variable.

I think the structure you wanted is:


If button is pressed:

Delay 50 ms
Read button again
If button is pressed:

Set pressed to the button number
Print the button message




In that layout the second If is controlling both the setting of the pressed variable as well as whether or not to print the Pressed! message.

if(lastButtons[x] == 1){ pressed = x;}


That line is saying "If last buttons X is 1, then set pressed to X. That is all it is doing. Nothing more, nothing less.