--- synaptics.c 2011-06-28 08:42:40.000000000 +0400 +++ synaptics.patched.c 2011-07-23 13:29:59.658986808 +0400 @@ -1811,7 +1811,9 @@ int y_edge_speed = 0; /* HIST is full enough: priv->count_packet_finger > 3 */ - *dx = estimate_delta(hw->x, HIST(0).x, HIST(1).x, HIST(2).x); +#define REV para->right_edge +#define MRE(X) (X)>REV?REV:(X) + *dx = estimate_delta(MRE(hw->x), MRE(HIST(0).x), MRE(HIST(1).x), MRE(HIST(2).x)); *dy = estimate_delta(hw->y, HIST(0).y, HIST(1).y, HIST(2).y); if ((priv->tap_state == TS_DRAG) || para->edge_motion_use_always)