list = {100, 105, 103, 99, 106, 107, 104, 112, 106, 106, 100.5}
crossingList[list_, delta_] :=
First /@ Most@
FixedPointList[# /. ({Shortest[a__],b___} /; (Abs[(((First@{a} - Last@{a})/First@{a})*100)] \[GreaterSlantEqual]
delta) :> {Last@{a}, b}) &, list]
crossingList[list, 5]
Is possible to write a code less sophisticated than the above ?