Can't get 'clean' analogRead from Multiplexer CD4067BE

I’m trying to read analog inputs from a CD4067BE chip. Even though I’m grounding half of the inputs ( I can ground them all but I don’t see the point now ). I get ‘dirty’ signals. To clarify that. I should be getting 0s ( zeros ) from every grounded input. Instead I’m getting random values from 0 to ~400. I now that analogRead can return ‘dirty’ results if the inputs doesn’t have an initial value, hence the grounding. Does anyone know why that happens and how to fix it? Thank you all for your time.

Here’s my code.

#include <stdio.h>

//Mux control pins
int s0 = 2;
int s1 = 3;
int s2 = 4;
int s3 = 5;

//Mux in "SIG" pin
int SIG_pin = 1;

void setup(){
  pinMode(s0, OUTPUT);
  pinMode(s1, OUTPUT);
  pinMode(s2, OUTPUT);
  pinMode(s3, OUTPUT); 

  digitalWrite(s0, LOW);
  digitalWrite(s1, LOW);
  digitalWrite(s2, LOW);
  digitalWrite(s3, LOW);
  
  Serial.begin(9600);
}

void loop(){
  
  /* Buffer init: */
  char buffer[50];
  
  Serial.print("[");
  for(int i = 8; i < 16; i ++){
    snprintf(buffer, 50, "{ %d : %d }, ", i, readMux(i) );
    Serial.print(buffer);
  }
  
  Serial.println("]\n");
  
  delay(200);
}

int readMux(int channel){
  int controlPin[] = {s0, s1, s2, s3};

  int muxChannel[16][4]={
    {0,0,0,0}, //channel 0
    {1,0,0,0}, //channel 1
    {0,1,0,0}, //channel 2
    {1,1,0,0}, //channel 3
    {0,0,1,0}, //channel 4
    {1,0,1,0}, //channel 5
    {0,1,1,0}, //channel 6
    {1,1,1,0}, //channel 7
    {0,0,0,1}, //channel 8
    {1,0,0,1}, //channel 9
    {0,1,0,1}, //channel 10
    {1,1,0,1}, //channel 11
    {0,0,1,1}, //channel 12
    {1,0,1,1}, //channel 13
    {0,1,1,1}, //channel 14
    {1,1,1,1}  //channel 15
  };

  //loop through the 4 sig
  for(int i = 0; i < 4; i ++){
    digitalWrite(controlPin[i], muxChannel[channel][i]);
  }

  //read the value at the SIG pin
  int val = analogRead(SIG_pin);

  //return the value
  return val;
}