how? white is mated
The chess analysis engine's blunders

Since Qxc1+ was at the end of a 6 move variation, perhaps the computer is not 100% sure that Black could have forced such mate.
Edit: Yeah, I just looked into the Horizon Effect and that makes perfect sense. Good job Tal.

Since Qxc1+ was at the end of a 6 move variation, perhaps the computer is not 100% sure that Black could have forced such mate.
Exactly. A better engine would look much deeper and also perform a few other checks to minimise this blind effect.

If I had to guess, I'd say the problem is that the computer allows positions where it is in check to end the quiescence search.

The horizon effect (or horizon problem) is a problem in artificial intelligence.
When searching a large game tree (for instance using minimax or alpha-beta pruning) it is often not feasible to search the entire tree, so the tree is only searched down to a certain depth. This results in the horizon effect where a significant change exists just over the "horizon" (slightly beyond the depth the tree has been searched). Evaluating the partial tree thus gives a misleading result.
An example of the horizon effect occurs when some negative event is inevitable but postponable, but because only a partial game tree has been analysed, it will appear to the system that the event can be avoided when in fact this is not the case. For example, in chess, assume a situation where black is searching the game tree to the six plies depth and from current position, it can see that it is going to lose queen in the sixth ply. Now let there be such a combination that by sacrificing a rook, the AI can push the loss of the queen to the eight ply. This is of course a bad move, because it leads to losing not only the queen, but also a rook. However, since the loss of the queen was pushed over the horizon of search, it is not discovered and evaluated by the search. Sacrificing of the rook seems to be better than losing the queen, so the sacricifing move is returned as the best option.
Source: wikipedia

Chess engines overcome simple horizon effect problems like the one above by using a quiescence search. That is, extending the game tree until the position is "quiescent" or quiet, meaning there are no direct captures in one move. This is done by extending the tree with capturing moves. It should also be extended if one side is in check as is the case in the above position.
So I would say the problem with the code here is in the quiescence search not extending the tree when one side is in check.

There are some comedy errors in the analysis from time to time which might be attributable to this 'horizon effect'.
Does anyone have any particularly amusing analysis engine blunders to share with us? The OP is a really good example.

Here's another humourous "horizon problem" : (forgive the grainy image, saved as a GIF & messed up formating & didn't feel like redoing, this is from an old game vs. erik that I won but he was beating me in & could have had me (after move 26 I almost resigned but tried a last ditch RxB in the off chance he'd take the bait)! Anyway the humorous thing is that in this (non-played) line the comp gives white a "decisive advantage" even though he's about to get mated in one move!
Mate in two = drawish?
It occasionally misses mate in one towards the end of it's lines also...