Stockfish is cheating? I am using the Arena GUI to run Stockfish. I set up the following position.

[FEN "r2q1rk1/2p1bppp/p1n5/1p1pP3/3Pn3/1P3N1P/1P3PP1/RNBQR1K1 w - - 0 11"]
[SetUp "1"]


At a search depth of 16 half moves stockfish gives the following analysis:

Nc3 f5 exf6 Nxf6 Bg5 h6 Qe2 Qd6 Qe6+ Kh8 Qxd6 cxd6 Bf4 b4 Na4 Nd7 Bg3 Rc8 Rc1 Kh7 Re6


As it stands, the line above consists of 21 half moves. I thought it was a problem with the GUI so I ran the same position into stockfish from the command line and again it gives a line with 21 moves. How is this possible? Is it a configuration from the engine to search at a depth higher than the specified?
Computers are really stupid, they can't evaluate a position that contains exchange threats.  When the program reaches the expected depth and there are exchanges present in the position, the computer performs a Static Exchange Evaluation, which is hard to program correctly, or it extends the search depth until the exchanges and other factors are eliminated.