Aunque había visto el error de que sumaba y restaba el i, no había pensado en generar una variable auxiliar... pero se pudo lograr
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>FLOR</title>
</head>
<body>
<canvas width="600" height="400">
</canvas>
</body>
<script>
const pantalla = document.querySelector('canvas');
const pincel = pantalla.getContext('2d');
const cuadrado = (x,y,ancho,alto,color,borde) => {
pincel.fillStyle = color;
pincel.fillRect(x,y,ancho,alto);
pincel.strokeStyle = borde;
pincel.strokeRect(x,y,ancho,alto)
}
cuadrado(0,0,600,400,"lightgray");
const circulo = (x,y,radio,color) =>{
pincel.fillStyle = color;
pincel.beginPath();
pincel.arc(x,y,radio,0,2*Math.PI);
pincel.fill();
}
const limpiarPantalla = () =>{
pincel.clearRect(0,0,600,400)
}
var i = 0;
var sentido = 1;
const actualizarPantalla =() =>{
limpiarPantalla();
circulo(i,20,10,"blue");
if( i >600){
sentido = -1
}
if(i <0){
sentido = 1
}
i += sentido
}
setInterval(actualizarPantalla,5)
</script>
</html>