No conozco postgis, pero quizás te pueda dar algún consejo para debugar...
Primero pon una excepción o algo que de error dentro de la función para asegurarte de que pasa por ella.
Por otro lado puedes hacer una tabla DEBUG(TIMESTAMP, VARCHAR(256)) y dentro de la función vas haciendo un INSERT con información que te ayude a saber los valores que se van manejado.
Por ejemplo :
- podrías guardar el resultado de ST_Area(ST_Intersection(z.geom, buffer_alum.geom)) para ver si devuelve nulos.
- podrías guardar un SELECT COUNT(*) FROM ... WHERE ST_Intersects(z.geom, buffer_alum.geom) para ver cuantos registros se están modificando.
Espero que esto te ayude...