Terrain Edit - Runtime (Plz Help)

I have a few questionS about this, so I have made this code.

#pragma strict

var terrain : Terrain;
var terraindata : TerrainData;

function Start () 
{
Edit();
}

function Edit () 
{
var XPosition : float  = 0; 
var ZPosition : float = 0 ; 

var height : float[,] = terraindata.GetHeights(5, 0, terraindata.heightmapWidth, terraindata.heightmapHeight);

height[XPosition,ZPosition] = 10.0f;

terraindata.SetHeights(0, 0, height);
}

and for the most part it work, it just a few thing I don’t get.

Question 1:
On terraindata.SetHeights(0, 0, height); it only make one part of the terrain go up. I want to pick were
I raise or lower it. How can I do that?

and Question 2:
Why do it save over the terrain. Is there anyway to keep the terrain or do it all we need to replace over the terrain you have this on?

PLZ HELP

Change the coordinates to your desired location

Terrain changes are permanent unless you make copies prior; you can export it first but runtime deformation of terrain is perma and does not roll back when you hit stop.