Find the largest number that's adjacent to a zero Challenge:

Take a vector / list of integers as input, and output the largest number that's adjacent to a zero.

Specifications:


As always, optional input and output format
You may assume that there will be at least one zero, and at least one non-zero element.


Test cases:

1 4 3 6 0 3 7 0
7

9 4 9 0 9 0 9 15 -2
9

-4 -6 -2 0 -9
-2

-11 0 0 0 0 0 -12 10
0

0 20 
20


Good luck and happy golfing!
MATL, 10 bytes
t~5BZ+g)X&gt;

Try it online! Or verify all test cases.
Explanation
Let's take input [-4 -6 -2 0 -9] as an example.
t     % Input array. Duplicate
      %   STACK: [-4 -6 -2 0 -9],  [-4 -6 -2 0 -9]
~     % Logical negate. Replaces zeros by logical 1, and nonzeros by logical 0
      %   STACK: [-4 -6 -2 0 -9],  [0 0 0 1 0]
5B    % Push logical array [1 0 1] (5 in binary)
      %   STACK: [-4 -6 -2 0 -9], [0 0 0 1 0], [1 0 1]
Z+    % Convolution, maintaining size. Gives nonzero (1 or 2) for neighbours of
      % zeros in the original array, and zero for the rest
      %   STACK: [-4 -6 -2 0 -9], [0 0 1 0 1]
g     % Convert to logical
      %   STACK: [-4 -6 -2 0 -9], [0 0 1 0 1]
)     % Use as index into original array
      %   STACK: [-2 -9]
X&gt;    % Maximum of array.
      %   STACK: -2
      % Implicitly display