Set as zero low values in symbolic expressions

Hello everyone,
I am seeking a way to simplify a symbolic expression setting as zero floating point numbers that are below a certain threshold.
For example the expression ‘1e-17*x + y’ should return ‘y’.
I tried to use the @rule macros without success, here is a simple coding example:

import Symbolics
import SymbolicUtils
using Symbolics
using SymbolicUtils.Rewriters

function zero_fun(term)
	threshold = 1e-15
	if isa(term,AbstractFloat) && abs(term) < threshold
		return true
	end
	return false
end

rule_zero = @rule ~x => 0

rw_zero = PassThrough(If(zero_fun, rule_zero))

# --- test --- #
@variables y, z
x = 1e-16
eq = (x*y+z)^2
# prune_terms(x, 1e-15)
rw_zero(x) # ok, returns '0'
rw_zero(x*y) # not ok, returns '1e-17y'
rw_zero(x*y + z) # not ok, returns '1e-17y+z'
rw_zero(eq) # same
rewriter_zero = Postwalk(rw_zero) # tried Postwalk
rewriter_zero(eq) # not ok

The code on ‘rw_zero(x*y)’ didn’t substitute as expected and returns ‘1e-17y’.

I didn’t understand how to let the rewriter elaborate on each argument of the expression.