Q:

How to interpolate a point vector layer inside a boundary (polygon layer) QGIS/GRASS/SAGA? 

I have to create a heatmap of water temperatures inside a lake for which I have sample points.  The map should look much like the climate maps generated by climate change models.  I have the temperature points and they were attached as attributes to a lat/long point shapefile layer.  
I would like to interpolate these points using temperature as an interpolation attribute, but I'd like to contain the values within the lake.  
I would prefer not to do an interpolation with the lake area polygon as a masking/clipping layer, but rather the interpolation should take in account the boundaries much in the way ANUDEM seems to do it for hydrological maps, if my understanding is correct.  That is borders should influence the value of the interpolated value. 
Please let me know if such interpolation is possible in one of: QGIS, GRASS, SAGA. 
If ArcGIS can provide such functionality while the others don't I can get a temporary license to do this.  
Edit: After doing more research I think that what I need is called interpolation with fault lines or barriers.  I found an Open Source program surfit, which apparently does that.  I am curios if in any of the software mentioned above there is something that does that? 

A:

GRASS GIS can do that directly with the splines interpolation module v.surf.rst.  It offers a "mask" parameter which is an existing raster map used as mask.  See also http://grasswiki.osgeo.org/wiki/RST_Spline_Surfaces

A:

It looks like a lot of people are trying to find a decent tool for interpolation within boundaries.  After looking at several options including the one suggested by Markus and at IDW with barriers in ArcGIS my best results were given by the v.surf.icw addon.   An interpolation result can be seen in this image:

The algorithm is not very fast.  It needed 3 hours to finish the interpolation for 50 data points, but it works.   Probably the spline algorithm would have given smoother results, but unfortunately the mask option does not work.