diff -r -u fann-2.1.0/src/fann.c fann-2.1.0a/src/fann.c
--- fann-2.1.0/src/fann.c	2006-09-14 14:02:05.000000000 +0900
+++ fann-2.1.0a/src/fann.c	2008-11-18 01:37:41.578000000 +0900
@@ -731,6 +731,8 @@
 					neuron_it->value = (fann_type) ((neuron_sum < 0) ? -multiplier : multiplier);
 					break;
 				case FANN_LINEAR:
+				case FANN_LINEAR_LOW:
+				case FANN_LINEAR_HIGH:
 					neuron_it->value = neuron_sum;
 					break;
 				case FANN_LINEAR_PIECE:
diff -r -u fann-2.1.0/src/fann_cascade.c fann-2.1.0a/src/fann_cascade.c
--- fann-2.1.0/src/fann_cascade.c	2006-09-14 14:02:05.000000000 +0900
+++ fann-2.1.0a/src/fann_cascade.c	2008-11-18 01:38:12.305000000 +0900
@@ -719,6 +719,8 @@
 					output_train_errors[j] /= 2.0;
 					break;
 				case FANN_LINEAR:
+				case FANN_LINEAR_LOW:
+				case FANN_LINEAR_HIGH:
 				case FANN_THRESHOLD:
 				case FANN_SIGMOID:
 				case FANN_SIGMOID_STEPWISE:
diff -r -u fann-2.1.0/src/fann_train.c fann-2.1.0a/src/fann_train.c
--- fann-2.1.0/src/fann_train.c	2006-09-14 14:02:05.000000000 +0900
+++ fann-2.1.0a/src/fann_train.c	2008-11-18 01:43:47.890000000 +0900
@@ -38,6 +38,8 @@
 	switch (activation_function)
 	{
 		case FANN_LINEAR:
+		case FANN_LINEAR_LOW:
+		case FANN_LINEAR_HIGH:
 		case FANN_LINEAR_PIECE:
 		case FANN_LINEAR_PIECE_SYMMETRIC:
 			return (fann_type) fann_linear_derive(steepness, value);
@@ -122,6 +124,12 @@
 		case FANN_COS_SYMMETRIC:
 			neuron_diff /= (fann_type)2.0;
 			break;
+		case FANN_LINEAR_LOW:
+			if( neuron_diff > 0 ) neuron_diff *= 1.0 / 7.0;
+			break;
+		case FANN_LINEAR_HIGH:
+			if( neuron_diff < 0 ) neuron_diff *= 1.0 / 7.0;
+			break;
 		case FANN_THRESHOLD:
 		case FANN_LINEAR:
 		case FANN_SIGMOID:
diff -r -u fann-2.1.0/src/include/fann_activation.h fann-2.1.0a/src/include/fann_activation.h
--- fann-2.1.0/src/include/fann_activation.h	2006-06-19 01:32:03.000000000 +0900
+++ fann-2.1.0a/src/include/fann_activation.h	2008-11-18 01:36:59.653000000 +0900
@@ -86,6 +86,8 @@
 switch(activation_function) \
 { \
 	case FANN_LINEAR: \
+	case FANN_LINEAR_LOW: \
+	case FANN_LINEAR_HIGH: \
 		result = (fann_type)value; \
         break; \
 	case FANN_LINEAR_PIECE: \
diff -r -u fann-2.1.0/src/include/fann_cpp.h fann-2.1.0a/src/include/fann_cpp.h
--- fann-2.1.0/src/include/fann_cpp.h	2006-03-24 08:54:46.000000000 +0900
+++ fann-2.1.0a/src/include/fann_cpp.h	2008-11-18 01:33:46.331000000 +0900
@@ -274,7 +274,9 @@
         LINEAR_PIECE,
         LINEAR_PIECE_SYMMETRIC,
 	    SIN_SYMMETRIC,
-	    COS_SYMMETRIC
+	    COS_SYMMETRIC,
+	LINEAR_LOW,
+	LINEAR_HIGH
     };
 
     /* Enum: network_type_enum
diff -r -u fann-2.1.0/src/include/fann_data.h fann-2.1.0a/src/include/fann_data.h
--- fann-2.1.0/src/include/fann_data.h	2006-09-14 14:02:06.000000000 +0900
+++ fann-2.1.0a/src/include/fann_data.h	2008-11-18 01:33:00.086000000 +0900
@@ -222,7 +222,9 @@
 	FANN_SIN_SYMMETRIC,
 	FANN_COS_SYMMETRIC,
 	FANN_SIN,
-	FANN_COS
+	FANN_COS,
+	FANN_LINEAR_LOW,
+	FANN_LINEAR_HIGH
 };
 
 /* Constant: FANN_ACTIVATIONFUNC_NAMES
@@ -254,7 +256,9 @@
 	"FANN_SIN_SYMMETRIC",
 	"FANN_COS_SYMMETRIC",
 	"FANN_SIN",
-	"FANN_COS"
+	"FANN_COS",
+	"FANN_LINEAR_LOW",
+	"FANN_LINEAR_HIGH"
 };
 
 /* Enum: fann_errorfunc_enum
